news 2026/9/26 3:41:58

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/9/19 17:55:51

MySQL SQL 面试核心考点与注意事项总结

一、核心考点清单1. GROUP BY 与聚合函数&#xff08;⭐⭐⭐⭐⭐&#xff09;必考知识点&#xff1a;-- 五大聚合函数 COUNT(*) -- 统计所有行 COUNT(column) -- 统计非NULL值 COUNT(DISTINCT column) -- 统计不重复的非NULL值 AVG(column) -- 平均值&a…

作者头像 李华
网站建设 2026/9/15 18:35:36

Java计算机毕设之基于SpringBoot的在线学习交流系统设计与实现基于springboot的考研学生在线学习与交流系统的设计与实现(完整前后端代码+说明文档+LW,调试定制等)

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

作者头像 李华
网站建设 2026/9/21 8:55:53

数据和 AI 的关系

数据和 AI 的关系可以用一句话总结&#xff1a;没有数据&#xff0c;就没有 AI&#xff1b;数据决定 AI 的能力上限&#xff0c;算法只是逼近这个上限。下面从 本质、作用、阶段、质量影响、未来趋势 5 个层面给出最清晰的理解&#x1f539; 1️⃣ 本质关系&#xff1a;数据是“…

作者头像 李华
网站建设 2026/9/21 8:55:53

【无人机三维路径规划】基于A_Satr结合天牛算法BAS野外环境下考虑模态切换点优化的3D路径规划附Matlab代码和报告

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码获取及仿真…

作者头像 李华
网站建设 2026/9/21 1:56:41

告别无效调用:高效实现 AI Agent 的 Function 交互设计

做 Agent 之前&#xff0c;彻底搞懂 AI 的 Function Calling / Tools 上篇(链接如上)我们解决了一个问题&#xff1a;让 AI 按你说的格式&#xff0c;老老实实返回 JSON。 现在这件事你已经会干了&#xff1a; 用户说&#xff1a;「我想查上海的天气」AI 乖乖返回&#xff1a;{…

作者头像 李华