当前位置: 首页 > article >正文

Leetcode K个一组翻转链表


双指针法,java solution

class Solution {
    public ListNode reverseKGroup(ListNode head, int k) {
        if(head == null || head.next == null) return head;
        //设置pre和index节点
        ListNode pre = head, index = head.next;
        int m = 0;
        while(++m < k && index != null) {
            pre.next = index.next;
            index.next = head;
            head = index;
            index = pre.next;
        }
        if(m < k) { //这是链表长度小于k时,我们前面的操作也将链表给反转了,此时我们需要反转回去
            return reverseKGroup(head, m);
        }
        pre.next = reverseKGroup(index, k);
        return head;
    }
}

这样每次逆时针翻转一个节点,直至翻转k个节点之后,由翻转下一组节点,
pre 始终指向下一个待翻转的节点,index 在一开始是待翻转的节点,在翻转之后,新的 head 节点需要更新,然后 index 再返回去翻转下一个节点。
在这里插入图片描述


http://www.kler.cn/a/558098.html

相关文章:

  • win10把c盘docker虚拟硬盘映射迁移到别的磁盘
  • MySQL(高级特性篇)11章——数据库的设计规范
  • 装箱和拆箱是什么?(C#)
  • 【hot100】240搜索二维矩阵
  • A097基于SpringBoot实现的社区博客管理系统
  • vue-treeselect显示unknown的问题及解决
  • 安卓好软-----车机端 安卓tv端很好用的应用管家 adb 授权等等功能
  • 嵌入式0xDEADBEEF
  • 酒店旅游API:数据交互的隐形桥梁——以携程API为例
  • Android-Skin-Loader 换肤框架不支持多个activity同时换肤问题处理
  • Ubuntu DeepSeek磁盘空间不够解决办法
  • linux有名管道
  • 鸿蒙开发技术指南:从入门到精通
  • LeetCode 热题 100_在排序数组中查找元素的第一个和最后一个位置(65_34_中等_C++)(二分查找)(一次二分查找+挨个搜索;两次二分查找)
  • 技术解析 | 适用于TeamCity的Unreal Engine支持插件,提升游戏构建效率
  • netty基础知识梳理和总结
  • 数据库面试知识点总结
  • [Android]浏览器下载的apk文件无法识别无法安装问题
  • 《AI与NLP:开启元宇宙社交互动新纪元》
  • Django 连接(sqlserver)数据库方法