news 2026/9/27 22:53:51

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/25 12:24:09

自动驾驶VLA新SOTA:复旦联合团队提出WAM-Diff重塑端到端自动驾驶

复旦大学与引望智能科技联合提出自动驾驶WAM-Diff框架。WAM-Diff的全新端到端自动驾驶框架&#xff0c;在NAVSIM-v1榜单上取得了91.0 PDMS&#xff08;预测驾驶得分&#xff09;的惊人成绩&#xff0c;一举超越了现有的自回归和扩散基线模型。它通过掩码扩散模型&#xff08;Ma…

作者头像 李华
网站建设 2026/9/25 17:46:17

为什么你学了很多却依然做不好决策?

认知提升&#xff1a;突破思维边界&#xff0c;重塑你的世界观在信息爆炸的时代&#xff0c;我们每天都被海量数据包围——短视频、新闻推送、社交媒体、知识付费课程……获取信息从未如此便捷。根据中国互联网络信息中心&#xff08;CNNIC&#xff09;2024年发布的第53次《中国…

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

从0基础到完全掌握AD 第11讲 属性面板与原理图尺寸修改

我们今天开始讲原理图的部分&#xff0c;但是我们要讲一个问题&#xff0c;当我们在工作中需要画原理图的时候&#xff0c;我们是先要画原理图库的&#xff0c;就是起码你的库里得有这个元器件才能有原理图&#xff0c;那我们今天为什么先讲原理图呢&#xff1f;因为其实原理图…

作者头像 李华
网站建设 2026/9/21 16:39:07

RyTuneX(Win1011系统优化工具)

RyTuneX是一款专为Windows 10和Windows 11系统打造的系统优化工具&#xff0c;基于WinUI 3框架构建&#xff0c;旨在帮助用户优化系统资源&#xff0c;提升设备性能&#xff0c;同时增强隐私保护。 软件功能 系统优化&#xff1a;支持一键性能调整&#xff0c;可禁用Superfetc…

作者头像 李华
网站建设 2026/9/26 3:00:03

探寻户外发光字行业标杆:解读济南鑫中标的专业解决方案

在商业展示的视觉战场上&#xff0c;户外门头发光字无疑是吸引顾客目光的第一利器。无论企业品牌打造、网红店铺引流&#xff0c;还是临时展位宣传&#xff0c;优质的发光字不仅能传递商业信息&#xff0c;更能成为街道景观的艺术符号。口碑认证的专业服务商&#xff1a;鑫中标…

作者头像 李华
网站建设 2026/9/24 23:46:40

计算机毕业设计springboot基于协同过滤算法的旅游推荐系统 SpringBoot 驱动的个性化旅程发现平台:融合协同过滤的智慧推荐引擎 基于用户兴趣聚类的 SpringBoot 旅游行程智能

计算机毕业设计springboot基于协同过滤算法的旅游推荐系统hcgg8585 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。 当“说走就走”成为年轻人的口头禅&#xff0c;面对海量却雷…

作者头像 李华