leetcode 206 如何原地反转单链表?_暮色_年华的博客-CSDN博客

这题是LeetCode206的变形

思路:

取出子链表后反转后连入原链表

import java.util.*;/** public class ListNode {*   int val;*   ListNode next = null;* }*/public class Solution {/*** * @param head ListNode类 * @param m int整型 * @param n int整型 * @return ListNode类*/// 解法一:双指针(两次遍历)//说明:方便理解,以下注释中将用left,right分别代替m,n节点 public ListNode reverseBetween (ListNode head, int m, int n) {//设置虚拟头节点ListNode dummyNode = new ListNode(-1);dummyNode.next = head;ListNode pre = dummyNode;//1.走left-1步到left的前一个节点for(int i=0;i<m-1;i++){pre = pre.next;}//2.走roght-left+1步到right节点ListNode rigthNode = pre;for(int i=0;i<n-m+1;i++){rigthNode = rigthNode.next;}//3.截取出一个子链表ListNode leftNode = pre.next;ListNode cur = rigthNode.next;//4.切断链接pre.next=null;rigthNode.next=null;//5.反转局部链表reverseLinkedList(leftNode);//6.接回原来的链表pre.next = rigthNode;leftNode.next = cur;return dummyNode.next;}//反转局部链表private void reverseLinkedList(ListNode head){ListNode dummyNode=new ListNode(-1);ListNode p=head;while(p!=null){ListNode q=p.next;p.next=dummyNode.next;dummyNode.next=p;p=q;}dummyNode.next=null;}
}

【链表】牛客网:链表内指定区间反转相关推荐

  1. 回文链表 牛客网 程序员面试金典 C++ Python

    回文链表 牛客网 程序员面试金典  C++ Python 题目描述 请编写一个函数,检查链表是否为回文. 给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文. 测试样例 ...

  2. 【算法面试必刷JAVA版二】链表内指定区间反转

    盲目刷题,浪费大量时间,博主这里推荐一个面试必刷算法题库,刷完足够面试了.传送门:牛客网面试必刷TOP101

  3. 牛客网 链表结构 算法相关内容

    链表结构 单链表的节点结构  由以下结构的节点依次连接起来所形成的链叫单链表结构 Clas Node<V>{ V value; Node next; } 双链表的节点结构 由以下结构的节点 ...

  4. BM2 链表内指定区间反转

    描述 将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n)O(n),空间复杂度 O(1)O(1). 例如: 给出的链表为 1→2→3→4→5→NULL, m=2 ...

  5. (每日一练c++)CC57 链表内指定区间反转

    描述 将一个节点数为 size 链表 m 位置到 n 位置之间的区间反转,要求时间复杂度 O(n)O(n)O(n),空间复杂度 O(1)O(1)O(1). 例如: 给出的链表为 1→2→3→4→5→N ...

  6. 牛客题霸 NC21 链表内指定区间反转

    https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c 解决方案 Go func reverseBetween(head ...

  7. 牛客网 - 链表相加

    问题: 解题思路: 可以把节点数据提取出来存在列表里然后去算,当然,喜提时间爆表 还是老老实实在走节点的过程中就加然后建立链表 注意进位的设置,卡我十分钟的点在于q = self.reverse(q) ...

  8. 【Java】牛客网 链表分割

    题目描述 : 现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针. 解题思路 : 假 ...

  9. 【牛客网面试必刷TOP101】链表篇(一)

    链表 一.前言 二.学习刷题网站 1.推荐的原因 三.刷题 <1>反转链表 递归法 <2>链表内指定区间反转 ①头插法 ②递归法 <3>链表中的节点每k个一组翻转 ...

最新文章

  1. KEIL5.11安装小结
  2. ubuntu 修改ip
  3. 彻底理解Python中的yield
  4. gridview中的nbsp;问题解决方法
  5. think php框架 跨域,ThinkPHP框架实现session跨域问题
  6. mysql数据库deptno_mysql数据库的 select查询
  7. iOS 九宫格手势密码
  8. json yeid_如何控制Scrapy yield的顺序
  9. JVM 大厂面试都会问,都会这么问,你能顶住么?
  10. linux教学之安装python与pip环境
  11. 信号-失真噪声比 (SNDR) 无杂散动态范围 (SFDR)
  12. 使用prometheus+grafana监控k8s集群
  13. html里怎么画斜线表头,Word2013中绘制斜线表头的方法
  14. 指投:3 常见的指数基金品种
  15. 数字孪生|数字孪生装备-关键技术和发展阶段
  16. css入门1 css简介
  17. 华为手表开发:WATCH 3 Pro(15)传感器订阅加速度计
  18. 兰州大学信息与计算机科学硕,兰州大学信息科学与工程学院
  19. 涪陵创新计算机学校2015元旦晚会,涓涓之情助力成才丨重庆市涪陵创新计算机学校助推纳雍脱贫...
  20. Qt - WPS文本编辑器(WPS字体格式)

热门文章

  1. Bridge模式——对象结构型模式
  2. [转载]apache rewrite规则
  3. 手册-网站-仙客传奇团队博客
  4. HDU1285 确定比赛名次【拓扑排序】
  5. Bailian3164 奇偶排序【排序】
  6. xgboost 可视化与结果分析
  7. 【等价变换】—— 指数对数函数
  8. jQuery AJAX 与 jQuery 事件
  9. 动力系统 —— 液压与气压
  10. Python 标准库 —— 邮件(email)与邮件服务器(smtplib)