leetcode 25 K 个一组翻转链表

给你一个链表,每 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
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容