news 2026/9/2 16:06:58

LeetCode hot100——K 个一组翻转链表

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode hot100——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)额外内存空间的算法解决此问题吗?


题解

/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */ class Solution { public ListNode reverseKGroup(ListNode head, int k) { ListNode dummy = new ListNode(0); dummy.next = head; ListNode pre = dummy;//待翻转区间的前驱节点 ListNode end = dummy;//待翻转区间的后继节点 while (end.next != null) { // 移动 end,找到本组末尾 for (int i = 0; i < k && end != null; i++) { end = end.next; } if (end == null) break;//不足k个直接退出 ListNode start = pre.next; // 本组起点 ListNode nextStart = end.next;// 下一组起点,保存 end.next = null; // 断开本组,局部反转 pre.next = reverse(start); // pre接上翻转后的新头 start.next = nextStart; // 原来的start变成本组尾巴,接下一组 pre = start; // 更新前驱为本组尾巴 end = pre; // end重置到新pre,准备下一轮 } return dummy.next; } // 反转链表 private ListNode reverse(ListNode head) { ListNode prev = null; ListNode cur = head; while(cur != null){ ListNode next = cur.next; cur.next = prev; prev = cur; cur = next; } return prev; } }

思路

  1. 先统计剩余节点,不足 k 个直接结束。
  2. 对 k 个节点做局部反转
  3. 维护每组的前驱节点,把上一组尾连接新组头;当前组尾变成下一组的前驱。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 16:06:37

RK3588 WebRTC 实时流卡顿优化:从视频桥接到 H.264 PTS 回退

总结&#xff1a;这次卡顿不是单纯的网络丢包或编码帧率不足&#xff0c;而是先由跨 pipeline 视频桥接和缩放增加了处理负担&#xff0c;后又暴露出 H.264 B 帧导致的非单调 PTS&#xff1b;最终通过 appsink/appsrc 直连、限制 videorate 补帧&#xff0c;并让不满足 PTS 条件…

作者头像 李华
网站建设 2026/9/2 16:05:44

AI漫剧制作教程:人机协作的半自动流程,从剧本到成片

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

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

STM32驱动AD9833实现DDS波形发生器:原理、代码与调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/2 16:04:17

球墨管、铸铁球墨管和离心管到底怎么区分?

在给排水工程询价和材料清单中&#xff0c;“球墨管”“铸铁球墨管”“离心球墨铸铁管”等名称经常同时出现。有些名称是行业简称&#xff0c;有些强调材质或生产工艺&#xff0c;如果只凭叫法下单&#xff0c;容易出现口径理解不一致、配件遗漏或接口不匹配。采购前先把使用场…

作者头像 李华
网站建设 2026/9/2 16:01:34

胰腺癌研究常用株 AsPC-1,复苏慢这点要心里有数

AsPC-1 是胰腺癌研究里用得很多的一株&#xff0c;转移性胰腺腺癌来源&#xff0c;做 3D 培养、转染和药物评价都常见。它最需要心理准备的一点是——复苏恢复慢&#xff0c;别头几天看到一堆漂浮细胞就慌。AsPC-1 是人转移胰腺腺癌细胞&#xff0c;来源于一名 62 岁白人女性胰…

作者头像 李华