给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。
k 是一个正整数,它的值小于或等于链表的长度。
如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。
# Definition for singly-linked list.
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def reverseKGroup(self, head: ListNode, k: int) -> ListNode:
if k == 0:
return head
return self.reverse(head, k)
def reverse(self, node, k):
cnt = 1
tem = node
while cnt < k:
if tem is None:
return node
tem = tem.next
cnt += 1
if tem is None:
return node
next_head = self.reverse(tem.next, k)
new_head = ListNode(0)
tem.next = None
tem = node
while tem is not None:
node1 = tem
tem = tem.next
node1.next = new_head.next
new_head.next = node1
tem = new_head
while tem.next is not None:
tem = tem.next
tem.next = next_head
return new_head.next