题目

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)相关推荐

  1. 链表每k个反转 java_K 个一组翻转链表

    leetcode第25题(困难)问题描述 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度. 如果节点总数不是 k 的整数倍,那么请将最后 ...

  2. LeetCode - 25. Reverse Nodes in k-Group

    25. Reverse Nodes in k-Group Problem's Link -------------------------------------------------------- ...

  3. 【重点】LeetCode 25. Reverse Nodes in k-Group

    LeetCode 25. Reverse Nodes in k-Group 博客转载自:http://www.cnblogs.com/grandyang/p/4441324.html Solution ...

  4. 【Java】【leetcode第25题】K 个一组翻转链表

    文章仅供自己学习记录所用,若有侵权.联系我删除! 接着来个链表题(听说字节考了) [K 个一组翻转链表] 其实这道题是206题和24题结合的一个进阶版本,我觉得关键就是控制范围(反正我自己折磨了很久, ...

  5. 25. K 个一组翻转链表

    25. K 个一组翻转链表 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度. 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持 ...

  6. Leetcode-递归/反转链表模板-25. K 个一组翻转链表

    题目25. K 个一组翻转链表: 题解: 模拟 以K个为一组,进行常规反转,重点是要保留反转前的头节点,以及第K+1个节点,将其反转之后连接起来 代码: /*** Definition for sin ...

  7. K 个一组翻转链表(递归,Kotlin)

    25. K 个一组翻转链表 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度. 如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持 ...

  8. LeetCode--第25题K个一组翻转链表

    LeetCode–第25题K个一组翻转链表 题目描述 解决方案–C语言 主体是用递归的办法.递归三要素: 1.向上返回什么:一个处理好的子链表 2.返回条件是什么:要么是处于好了子链表,要么是因长度小 ...

  9. 20200329:K 个一组翻转链表(leetcode25)

    K 个一组翻转链表 题目 思路与算法 代码实现 复杂度分析 题目 思路与算法 注意题目里的常数的额外空间的要求,意味着不可以使用栈之类的数据结构. 这道链表题实际就是上一道的进阶版,指定每k个进行翻转 ...

  10. 清晰易懂的“K个一组翻转链表”解法

    题目来源:Leetcode K个一组翻转链表 一.题目 给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表. k 是一个正整数,它的值小于或等于链表的长度. 如果节点总数不是 k 的整数倍 ...

最新文章

  1. 活动排序工具之双代号网络(AOA)与单代号网络(AON)[cont.]
  2. windows10远程控制 电脑,远程桌面
  3. 复旦张奇:如何解决NLP中的鲁棒性问题?
  4. mySQL的安装教程
  5. 问题:linux系统经常出现断网的情况,重启之后系统恢复正常
  6. php dos,防止用户利用PHP代码DOS造成用光网络带宽
  7. python json库安装_jsonc库的安装以及简单使用
  8. 用递归的方式处理数组 把递归方法方法定义到数组的原型上 (这是一次脑洞大开的神奇尝试)...
  9. easyexcel导入固定sheet_springboot批量导入excel数据
  10. fatal error: hb.h: 没有那个文件或目录
  11. paip.java 开发中web server的选择jboss resin tomcat比较..
  12. c语言 有关文件读/写函数 详解
  13. Web API 之 — Fullscreen API
  14. 第86节:Java中的JQuery基础
  15. 自定义桌面(仿360桌面)
  16. Spring Security小教程 Vol 3. 身份验证的入口-AbstractAuthenticationProcessingFilter
  17. 修改python终端不能打开方法解决
  18. 4.2nbsp;反身理论与均衡价格论
  19. java代理(静态代理和jdk动态代理以及cglib代理)
  20. 企业飞信初探:无需APP也能聊天

热门文章

  1. SPOJ - NUMOFPAL Number of Palindromes(回文自动机)
  2. CH - 0805 防线(二分+思维)
  3. HDU - Reversi(dfs+水题)
  4. php+node+redis,redis,nodejs,php,pub/sub 实战: 微信语音识别
  5. vs运行时 文本可视化工具 无法点开_webpack 优化:2 款工具帮你找到构建速度“变慢”的原因...
  6. uva12099 Bookcase ACM NWERC
  7. python实战-pdf文件转txt
  8. 最长上升子序列(LIS)的求法
  9. 【项目介绍】搜索引擎
  10. 数据结构与算法 | 栈