给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。
k 是一个正整数,它的值小于或等于链表的长度。
如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。
给你这个链表:1->2->3->4->5
当 k = 2 时,应当返回: 2->1->4->3->5
当 k = 3 时,应当返回: 3->2->1->4->5
采用递归的方式解答,翻转k个后的子串作为子问题继续翻转,如果没有后续的k个结点,就直接返回不翻转的子串
class Solution:
def reverse(self,a,b):
pre=None
cur=a
nxt=None
while cur!=b:
nxt=cur.next
cur.next=pre
pre=cur
cur=nxt
return pre
def reverseKGroup(self, head: ListNode, k: int) -> ListNode:
if head is None:
return None
a=head
b=head
for i in range(k):
if b is None:
return head
b=b.next
newhead=self.reverse(a,b)
a.next=self.reverseKGroup(b,k)
return newhead