题目描述
https://leetcode-cn.com/problems/reverse-nodes-in-k-group/
思路题解
start start.next…tmp end,其中[start.next,tmp]是需要反转的地方。
# 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: ListNode, k: int) -> ListNode:
def reverseList(start,end):
if not start or not start.next:return start
l,m,r=start,start.next,start.next.next
l.next=None
while m!=end:
m.next=l
l=m
m=r
r=r.next
m.next=l
return end,start
if k==1:return head
start=ListNode()
start.next=head
end=head
flag=1
while end:
count=1
while count<k and end:
count+=1
end=end.next
if end:
tmp=end
end=end.next
l,r=reverseList(start.next,tmp)
if flag:#重置Head
head=l
flag=0
start.next,r.next=l,end
start=r
else:
break
return head