# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param head ListNode类
# @param k int整型
# @return ListNode类
#
class Solution:
def reverseKGroup(self , head: ListNode, k: int) -> ListNode:
# write code here
new_head = ListNode(-1)
new_head.next = head
pre_node = new_head
while True and pre_node:
current_node = pre_node.next
last_node = current_node
for i in range(1,k):
if not last_node:
return new_head.next
last_node = last_node.next
if not last_node:
return new_head.next
next_node = last_node.next
a,b = self.reverse(current_node,last_node)
pre_node.next = a
b.next = next_node
pre_node = b
return new_head.next
def reverse(self,a,b):
new_head = ListNode(-1)
temp = a
b.next = None
while temp:
new_temp = temp.next
temp.next = new_head.next
new_head.next = temp
temp = new_temp
return b,a