HOT 100 › 索引 › B7 链表 Linked List
LC 25K 个一组翻转链表Reverse Nodes in k-Group 困难
把链表每 k 个节点一组翻转,不足 k 个的尾部保持原序,返回新头节点。
思路 迭代分组:先探每组第 k 个节点,翻转组内并把上一组尾接到新头,组尾接下一段。时间 O(n)。
class Solution: def reverseKGroup(self, head, k): dummy = ListNode(0, head) prev = dummy while True: end = prev for _ in range(k): end = end.next if not end: return dummy.next nxt = end.next start = prev.next end.next = None prev.next = self.reverse(start) start.next = nxt prev = start def reverse(self, head): pre, cur = None, head while cur: cur.next, pre, cur = pre, cur, cur.next return pre