• 备战蓝桥杯————k个一组反转单链表


            k个反转单链表,顾名思义就是k个节点为一组进行反转,这是一道困难的题目,如何解答,可以在我们前面的反转链表中得到思路。

    如何 K 个一组反转单链表

    题目描述

            给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。

    k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。

    你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

    示例 1:

    输入:head = [1,2,3,4,5], k = 2
    输出:[2,1,4,3,5]
    

    示例 2:

    输入:head = [1,2,3,4,5], k = 3
    输出:[3,2,1,4,5]
    

    提示:

    • 链表中的节点数目为 n
    • 1 <= k <= n <= 5000
    • 0 <= Node.val <= 1000

    进阶:你可以设计一个只用 O(1) 额外内存空间的算法解决此问题吗?

    解题思路及代码

    1. 先反转以 head 开头的 k 个元素。
    2. 将第 k + 1 个元素作为 head,递归调用 reverseKGroup 函数。
    3. 将上述两个过程的结果连接起来。

          这种递归的思路非常巧妙,通过不断地递归调用自身,将问题分解成规模更小的子问题,并最终将这些子问题的解合并起来得到原问题的解。在代码实现时,确实需要考虑如何处理 base case,即当剩余的节点不足 k 个时的情况。

    1. /**
    2. * Definition for singly-linked list.
    3. * public class ListNode {
    4. * int val;
    5. * ListNode next;
    6. * ListNode() {}
    7. * ListNode(int val) { this.val = val; }
    8. * ListNode(int val, ListNode next) { this.val = val; this.next = next; }
    9. * }
    10. */
    11. class Solution {
    12. public ListNode reverseKGroup(ListNode head, int k) {
    13. if(head==null)return null;
    14. ListNode a=head,b=head;
    15. for(int i=0;i
    16. if(b==null)return head;
    17. b=b.next;
    18. }
    19. ListNode newhead= reverse(a,b);
    20. a.next=reverseKGroup(b,k);
    21. return newhead;
    22. }
    23. ListNode reverse(ListNode a, ListNode b) {
    24. ListNode pre, cur, next;
    25. pre=null;
    26. cur=a;
    27. next=a;
    28. while(cur!=b){
    29. next=cur.next;
    30. cur.next=pre;
    31. pre=cur;
    32. cur=next;
    33. }
    34. return pre;
    35. }
    36. }

    结果展示

  • 相关阅读:
    算法 旋转数组最小数字-(二分查找+反向双指针)
    Kafka生产者消息异步发送并返回发送信息api编写教程
    【敬伟ps教程】视频动画
    Vue报错: Avoid mutating a prop directly since the value will 问题解决
    这样在管理后台里实现 403 页面实在是太优雅了
    Access2007中如何运行SQL执行SQl语句
    MyBatis和MyBatis-Plus的差别和优缺点
    匿名插槽,具名插槽,作用域插槽
    初识SDN(二)
    兑换码生成与解析-个人笔记(java)
  • 原文地址:https://blog.csdn.net/2201_75381449/article/details/136334022