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