• 备战蓝桥杯————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. }

    结果展示

  • 相关阅读:
    〖Python 数据库开发实战 - MySQL篇㉜〗- 事务的隔离级别
    【图像融合】基于matlab粒子群优化自适应多光谱图像融合【含Matlab源码 004期】
    献给Gateway小白的一篇好文:Spring Cloud Gateway网关
    数据挖掘(1)概述
    面试 10年+ Java开发的感受和自省!
    PTA_乙级_1013
    MySQL(基础篇)——函数、约束
    接口自动化测试之Mock
    【Java基础】注释、关键字、常量及数据类型
    DOTA-PEG-葡萄糖 DOTA-葡萄糖
  • 原文地址:https://blog.csdn.net/2201_75381449/article/details/136334022