class Solution:
# @param {ListNode} head
# @param {integer} k
# @return {ListNode}
def reverse(self,start,end):
head = ListNode(0);head.next=start
while head.next!=end:
temp = start.next
start.next = temp.next
temp.next = head.next
head.next = temp
return [end, start]
def reverseKGroup(self, head, k):
if head==None: return None
nhead=ListNode(0); nhead.next=head; start=nhead
while start.next:
end=start
for i in range(k-1):
end=end.next
if end.next==None: return nhead.next
res=self.reverse(start.next, end.next)
start.next=res[0]
start=res[1]
return nhead.next