题目描述
方法:
pre->1(last)->2(cur)->3->4
pre->2->1(last)->3(cur)->4
# 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]:
def reverse(pre, stop):
last = pre.next
cur = last.next
while cur != stop:
last.next = cur.next
cur.next = pre.next
pre.next = cur
cur = last.next
return last
if not head or k == 1:
return head
dump = ListNode(0)
dump.next = head
pre = dump
cur = head
i = 0
while cur:
i += 1
if not i%k:
pre = reverse(pre, cur.next)
cur = pre.next
else:
cur = cur.next
return dump.next