leecode25,n个一组反转链表,反转链表的加强版
# Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def reverseKGroup(self, head: Optional[ListNode], k: int) -> Optional[ListNode]: n = 0 cur = head while cur: n += 1 # 统计节点个数 cur = cur.next #p0的next是下一个没反转前的头部,也是反转后的尾部 p0 = dummy = ListNode(next=head) pre = None cur = head while n >= k: n -= k for _ in range(k): # 同 92 题 nxt = cur.next cur.next = pre # 每次循环只修改一个 next,方便大家理解 pre = cur cur = nxt # pre是反转后的头部,cur是下一次反转前的头部 nxt = p0.next #翻转后的部分的尾部接上原链表 nxt.next = cur #原链表接上翻转后的部分的头部 p0.next = pre p0 = nxt return dummy.next