这题跟上一个swap node一样是先算出来k个,然后依次算每k个是如何的,最后返回head。代码如下:
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution(object):
def reverseKGroup(self, head, k):
"""
:type head: ListNode
:type k: int
:rtype: ListNode
"""
if not head:
return head
if not head.next:
return head
if k == 1:
return head
listofknode = []
left = head
for i in xrange(k):
if left:
listofknode.append(left)
left = left.next
else:
return head
listofknode[0].next = listofknode[-1].next
head = listofknode[-1]
left = head
for i in range(k - 1)[::-1]:
left.next = listofknode[i]
left = left.next
while True:
left1 = left.next
listofknode = []
for i in xrange(k):
if left1:
listofknode.append(left1)
left1 = left1.next
else:
return head
left.next = listofknode[-1]
listofknode[0].next = listofknode[-1].next
for i in range(k - 1)[::-1]:
listofknode[i + 1].next = listofknode[i]
left = listofknode[0]