leetcode 25. Reverse Nodes in k-Group | 25. K 个一组翻转链表(Java)
题目
https://leetcode.com/problems/reverse-nodes-in-k-group/
题解
乍一看以为很容易:每 k 个节点翻转,若剩余不足 k 个,则不变。没有什么技巧,但是有很多要考虑的细节,折腾了一个小时…
/*** 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) {if (k == 1) return head;ListNode newHead = null;ListNode preLast = new ListNode(); // 前一翻转区间的末尾节点preLast.next = head;ListNode curLast = null; // 当前翻转区间的末尾节点ListNode nextFirst = head; // 下一翻转区间的起始节点while (nextFirst != null) {// 让nextFirst指向下一个区间for (int i = 0; i < k; i++) {curLast = nextFirst;if (nextFirst != null) nextFirst = nextFirst.next;else break;}if (curLast == null) break;ListNode L = preLast.next;ListNode M = L.next;ListNode R = M.next;preLast.next.next = nextFirst;// 翻转当前区间do {M.next = L;L = M;M = R;if (R != null) R = R.next;} while (L != curLast);ListNode temp = preLast.next;preLast.next = curLast;preLast = temp;if (newHead == null) newHead = curLast;}return newHead;}
}
leetcode 25. Reverse Nodes in k-Group | 25. K 个一组翻转链表(Java)相关推荐
- 链表每k个反转 java_K 个一组翻转链表
leetcode第25题(困难)问题描述 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度. 如果节点总数不是 k 的整数倍,那么请将最后 ...
- LeetCode - 25. Reverse Nodes in k-Group
25. Reverse Nodes in k-Group Problem's Link -------------------------------------------------------- ...
- 【重点】LeetCode 25. Reverse Nodes in k-Group
LeetCode 25. Reverse Nodes in k-Group 博客转载自:http://www.cnblogs.com/grandyang/p/4441324.html Solution ...
- 【Java】【leetcode第25题】K 个一组翻转链表
文章仅供自己学习记录所用,若有侵权.联系我删除! 接着来个链表题(听说字节考了) [K 个一组翻转链表] 其实这道题是206题和24题结合的一个进阶版本,我觉得关键就是控制范围(反正我自己折磨了很久, ...
- 25. K 个一组翻转链表
25. K 个一组翻转链表 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度. 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持 ...
- Leetcode-递归/反转链表模板-25. K 个一组翻转链表
题目25. K 个一组翻转链表: 题解: 模拟 以K个为一组,进行常规反转,重点是要保留反转前的头节点,以及第K+1个节点,将其反转之后连接起来 代码: /*** Definition for sin ...
- K 个一组翻转链表(递归,Kotlin)
25. K 个一组翻转链表 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度. 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持 ...
- LeetCode--第25题K个一组翻转链表
LeetCode–第25题K个一组翻转链表 题目描述 解决方案–C语言 主体是用递归的办法.递归三要素: 1.向上返回什么:一个处理好的子链表 2.返回条件是什么:要么是处于好了子链表,要么是因长度小 ...
- 20200329:K 个一组翻转链表(leetcode25)
K 个一组翻转链表 题目 思路与算法 代码实现 复杂度分析 题目 思路与算法 注意题目里的常数的额外空间的要求,意味着不可以使用栈之类的数据结构. 这道链表题实际就是上一道的进阶版,指定每k个进行翻转 ...
- 清晰易懂的“K个一组翻转链表”解法
题目来源:Leetcode K个一组翻转链表 一.题目 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度. 如果节点总数不是 k 的整数倍 ...
最新文章
- 活动排序工具之双代号网络(AOA)与单代号网络(AON)[cont.]
- windows10远程控制 电脑,远程桌面
- 复旦张奇:如何解决NLP中的鲁棒性问题?
- mySQL的安装教程
- 问题:linux系统经常出现断网的情况,重启之后系统恢复正常
- php dos,防止用户利用PHP代码DOS造成用光网络带宽
- python json库安装_jsonc库的安装以及简单使用
- 用递归的方式处理数组 把递归方法方法定义到数组的原型上 (这是一次脑洞大开的神奇尝试)...
- easyexcel导入固定sheet_springboot批量导入excel数据
- fatal error: hb.h: 没有那个文件或目录
- paip.java 开发中web server的选择jboss resin tomcat比较..
- c语言 有关文件读/写函数 详解
- Web API 之 — Fullscreen API
- 第86节:Java中的JQuery基础
- 自定义桌面(仿360桌面)
- Spring Security小教程 Vol 3. 身份验证的入口-AbstractAuthenticationProcessingFilter
- 修改python终端不能打开方法解决
- 4.2nbsp;反身理论与均衡价格论
- java代理(静态代理和jdk动态代理以及cglib代理)
- 企业飞信初探:无需APP也能聊天
热门文章
- SPOJ - NUMOFPAL Number of Palindromes(回文自动机)
- CH - 0805 防线(二分+思维)
- HDU - Reversi(dfs+水题)
- php+node+redis,redis,nodejs,php,pub/sub 实战: 微信语音识别
- vs运行时 文本可视化工具 无法点开_webpack 优化:2 款工具帮你找到构建速度“变慢”的原因...
- uva12099 Bookcase ACM NWERC
- python实战-pdf文件转txt
- 最长上升子序列(LIS)的求法
- 【项目介绍】搜索引擎
- 数据结构与算法 | 栈