class Solution: def reverseKGroup(self , head: ListNode, k: int) -> ListNode: # 区间反转函数,返回本组头尾和下组第一个元素 def reverse(pre, cur): tail = cur for i in range(k): nex = cur.next cur.next = pre pre = cur cur = nex return pre, tail, cur # 求长度,便于后面循环 cur = head length = 0 while cur != None: length += 1 cur = cur.next if length < k: return head # 得到第一组头,尾和第二组第一个元素 head, tail, nex = reverse(None, head) # 对剩下的组逐一操作,尾头连接 for j in range(length//k - 1): h, t, nex = reverse(None, nex) tail.next = h tail = t # 落单的元素处理 tail.next = nex return head