https://leetcode.com/problems/reverse-nodes-in-k-group/#/description
class Solution(object):
def reverseNode(self, nodes, k):
for ind in xrange(k):
node = nodes
for v in xrange(k-ind-1):
if not node: return None,None
node = node.next
if not node: return None,None
if ind != 0:
baknode.next = node
else:
headnode = node
nheadnode = node.next
baknode = node
node.next=nheadnode
return headnode,nheadnode
def reverseKGroup(self, head, k):
"""
:type head: ListNode
:type k: int
:rtype: ListNode
"""
if k <= 1:
return head
# a ... bc .... de....
# b ... ad .... cf....
bnode,cnode = self.reverseNode(head, k)
if not bnode:
return head
newhead = bnode
anode = head
while bnode.next:
dnode,cnode1 = self.reverseNode(cnode, k)
if not dnode:
break
anode.next = dnode
anode = cnode
cnode = cnode1
bnode = dnode
return newhead