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

JAVA练习299- 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)额外内存空间的算法解决此问题吗?

来源:25. K 个一组翻转链表 - 力扣(LeetCode)

解题分析

方法:模拟

定义两个指针 a 和 b,a 正常遍历,b 指向 a - k 的位置(即 a 的起始位置),用一个变量 times 进行计数,当 times == k,将 a - k 到 a 位置的链表进行反转(不会反转可见 JAVA练习291- 反转链表-CSDN博客),这里需要注意将 a - k - 1 位置的指针指向 a,a - k 位置指针指向 a + 1,然后 times 清零,b 指向当前位置,a 继续遍历即可。

时间复杂度:O(n)
空间复杂度: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 a = new ListNode(), b = head, result = null; a.next = head; int times = 1; while(b != null) { if (times < k) { b = b.next; times++; } else { ListNode tempB = b.next; ListNode tempA = a.next; reverse(a, a.next, b.next); a = tempA; times = 1; if (result == null) { result = b; } b = tempB; } } return result; } private void print(ListNode a) { StringBuilder sb = new StringBuilder(); while(a != null) { sb.append(a.val); sb.append(","); a = a.next; } System.out.println(sb.toString()); } private void reverse(ListNode preA, ListNode a, ListNode b) { ListNode cur = a, pre = b; while(cur != b) { ListNode temp = cur.next; cur.next = pre; pre = cur; cur = temp; } preA.next = pre; } }
http://www.jsqmd.com/news/1209001/

相关文章:

  • Dify 本地部署排坑实录:404 / 重定向过多 / 502 到底怎么修
  • 2026 年至今,会东诚信的回收工地旧电缆直销厂家推荐,工地废弃电缆的惊人价值:别让它们成为垃圾! - 实业推荐官【官方】
  • 上海门窗安装与维修怎么选?四家服务商深度对比 - 匠心24小时快修
  • 2026年湖北省住建厅建筑工程专业职称水平能力测试合格人员名单公示
  • 仅限前500名开发者获取:Cursor暗黑模式自动化脚本集(支持一键切换/定时切换/系统级联动),含源码+签名验证证书
  • Java程序设计(第3版)第四章——匿名内部类
  • 2026答辩翻车真相!论文满分也过不了|90%人栽在临场细节问答盲区,一键补救
  • 2026 上海下水道疏通对比:3 家服务方谁更靠谱省心 - 匠心24小时快修
  • 润开鸿AT32开发平台与OpenHarmony融合实践
  • 《级联年度选择》三、Observed与ObjectLink使用指南
  • 2026家族企业香港EMBA性价比榜单:民企老板避坑择校实测 - 品牌2026推荐
  • Pytorch由浅入深
  • 计算机毕业设计之特惠超市仓库管理系统
  • 从提示词到Metaprompt:结构化思维驱动AI应用工程化实践
  • 为什么你采购的学工平台不好用?拆解 5 个容易忽略的隐形坑
  • QJ32F407 USART串口_DMA发送和接收
  • 从传统审计到SAP顾问,他在科莱特SAP培训后收获月薪13K的Offer
  • 软信天成:企业如何准备AI-Ready数据?
  • 雷达中国官方专柜热线权威信息通告(2026年7月最新) - 亨得利官方服务中心
  • zabbix-server 配置告警
  • 沉浸式音频技术:构建专注环境的Python实现方案
  • TVM与TensorRT混合优化:深度学习推理加速实战
  • 2026年Q3网架行业实力制造商解析:徐州鹏程钢结构工程有限公司全链条服务能力与工程实践 - 企业推荐官【官方】
  • 计算机毕业设计之特殊时期景点旅游系统
  • LLM应用安全防护实战:从威胁模型到部署LLM-Guard防火墙
  • IntelliJ IDEA 安装与配置全指南:Java 开发者高效工作流构建
  • 游戏服务端gate功能
  • 那个反复出现的 bug
  • RA4M2微控制器驱动OLED显示模块的I2C通信实战
  • 爱回收奢侈品回收靠谱吗?我用爱马仕Picotin做了一次全流程深度评测 - 资讯速览