尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

JAVA练习299- K 个一组翻转链表

JAVA练习299- K 个一组翻转链表
📅 发布时间:2026/7/17 21:24:25

题目概览

给你链表的头节点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; } }

相关新闻

  • 计算机毕业设计之停车场缴费管理系统
  • 2026 上海下水道疏通对比:3 家服务方谁更靠谱省心 - 匠心24小时快修
  • 润开鸿AT32开发平台与OpenHarmony融合实践

最新新闻

  • Windows系统安全组件sgrmbroker.exe详解与优化指南
  • PyWxDump:逆向解析微信本地数据库,实现聊天记录解密与导出
  • 撤出之后如何“随时回来”?权限维持的5种姿势(第十一弹·权限维持篇)
  • Windows 11 LTSC微软商店安装:企业级稳定与现代化生态的完美融合
  • Ansible Playbook 基础与流程控制 30 例(Nginx 企业级实战)-001篇
  • Hermes 0.13升级指南:Tool Chaining、Memory异步持久化与分级熔断详解

日新闻

  • 佛山青少年训练营推荐:军博营地实力顶尖 - 秋山寄远
  • 如何快速上手PvZ2 Gardendless:免费Web版植物大战僵尸2完整指南
  • jiuwen-deepsearch核心功能详解:规划-检索-反思三合一智能工作流

周新闻

  • IX9104 PCIe5.0 高速交换芯片@ACP#完整规格 + 应用场景总结
  • Unity游戏集成Coze智能体:实现NPC智能对话与知识库联动
  • SAP EPIC 建行回单查询:从标准类CL_EPIC_EXAMPLE_CN_CCB_GHTD到Z类的5处关键修改

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号