news 2026/4/16 18:01:00

hot100 25.K个一组翻转链表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
hot100 25.K个一组翻转链表

思路:

1.链表分为已翻转部分 + 待翻转部分 + 未翻转部分。

2.每次翻转前,要确定翻转链表的范围,通过k次循环来确定。

3.需要记录翻转链表的前驱和后继,方便翻转完成后把已翻转和未翻转的部分连接起来。

4.初始时需要两个变量pre和end,pre表示待翻转链表的前驱,end表示待翻转链表的末尾。

5.经过k次循环,end到达末尾,记录待翻转链表的后继next = end.next。

6.翻转链表,然后将三部分链表连接起来,然后重置pre和end指针,然后进入下一次循环。

7.特殊情况:当翻转部分的长度不足k时,在定位end完成后,end == null,已经到达末尾,说明题目已经完成,直接跳出循环return即可。

复杂度分析:

1.时间复杂度:O(n*K),最好的情况为O(n),最差的情况为O(n^2)。

2.空间复杂度:O(1)。除了几个必须的节点指针外,没有占用额外空间。

附代码:

class Solution { public ListNode reverseKGroup(ListNode head, int k) { ListNode sentinel = new ListNode(0); //初始化哨兵节点 sentinel.next = head; ListNode pre = sentinel; //pre表示当前待翻转区间的前一个节点 ListNode end = sentinel; //end表示当前待翻转区间的最后一个节点 while(end.next != null){ for(int i = 0;i < k && end != null;i++){ end = end.next; //每k个节点一组 } if(end == null){ break; //剩余节点不足k个,直接退出 } ListNode start = pre.next; //start表示当前组的第一个节点 ListNode next = end.next; //next表示下一组的第一个节点 end.next = null; //断开当前组与下一组的连接 //翻转当前组 pre.next = reverse(start); //pre连接到翻转后的新头 start.next = next; //当前组的第一个节点连接下一组的第一个节点,即翻转后的尾连接到下一组的头 pre = start; //pre移动到当前组的尾部 end = pre; //end同步到pre位置 } return sentinel.next; } //翻转链表 private ListNode reverse(ListNode head){ ListNode pre = null; ListNode cur = head; while(cur != null){ ListNode tmp = cur.next; cur.next = pre; pre = cur; cur = tmp; } return pre; } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 16:10:55

【毕业设计】基于springboot的考研学生在线学习与交流系统的设计与实现(源码+文档+远程调试,全bao定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/15 13:40:40

Java毕设选题推荐:基于springboot的考研学生在线学习与交流系统的设计与实现基于springboot的考研在线学习与交流平台【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/16 12:02:14

老板2026年AI规划实操指南:解决数据、人才、流程三大难题

“十四五”收官在即&#xff0c;“十五五”蓝图已绘就。2026年&#xff0c;作为“人工智能”行动深化落地的关键之年&#xff0c;那些未能制定清晰AI战略的企业&#xff0c;正面临被新时代淘汰的风险。为助力企业老板精准锚定2026年AI规划方向&#xff0c;本文立足实操视角&…

作者头像 李华
网站建设 2026/4/16 11:58:08

从0基础到完全掌握AD第12讲 栅格设置

今天我们来讲栅格的设置&#xff0c;什么叫栅格呢&#xff1f;就是我们把原理图打开&#xff0c;发现他是有格子的&#xff0c;那么&#xff0c;我们就可以通过设置栅格大小&#xff0c;和移动的最小栅格距离等&#xff0c;来设置相关属性&#xff0c;有人说了&#xff0c;那个…

作者头像 李华
网站建设 2026/4/15 12:54:53

【Java基础】AOP与注解

一、注解 1、注解定义 注解本质上是一个实现了annotation的特殊接口&#xff0c;其具体实现类是Java运行时生成的动态代理类。通过反射获取注解时&#xff0c;返回的是Java运行时生成的动态代理对象。 // 定义注解 Target(ElementType.TYPE) Retention(RetentionPolicy.RUNTIME…

作者头像 李华