For k = 3, you should return: 3->2->1->4->5
这题做法与reverse linklist和 reverse pair类似都需要有一个用来reverse的函数。
题目的意思是每k个node翻转一次,如果不够k个就不转。
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# @param head, a ListNode
# @param k, an integer
# @return a ListNode
def reverse(self,start,end):
dummy=ListNode(0)
dummy.next=start
while dummy.next!=end:
tmp=start.next
start.next=tmp.next
tmp.next=dummy.next
dummy.next=tmp
return end,start
def reverseKGroup(self, head, k):
if head==None:return None
dummy=ListNode(0)
dummy.next=head
start=dummy
while start.next:
end=start
for i in range(k-1):
end=end.next
if end.next==None:
return dummy.next
newstart,newend=self.reverse(start.next,end.next)
start.next=newstart
start=newend
return dummy.next
Reverse Nodes in K-Groups Leetcode Python
原文地址:http://blog.csdn.net/hyperbolechi/article/details/43082921