92. 反转链表 II

  • 穿针引线法:
    如果【需要从头开始反转】,则需要加【虚拟头结点】。
class Solution {  // java 穿针引线public ListNode reverseBetween(ListNode head, int left, int right) {ListNode dummy = new ListNode(0, head);ListNode pre = dummy;for (int i = 0; i < left - 1; ++i) {pre = pre.next;}ListNode last = pre.next;for (int i = left; i < right; ++i) {last = last.next;}ListNode first = pre.next;pre.next = null;ListNode end = last.next;last.next = null;pre.next = reverList(first, last);first.next = end;return dummy.next;}public ListNode reverList(ListNode left, ListNode right) {ListNode pre = null;while (left != null) {ListNode tmp = left.next;left.next = pre;pre = left;left = tmp;}return pre;}
}
  • 头插法

  • tmp.nextpre.next 的利用太强了!!
  • pre 始终是固定的,以 pre.next 连接 插到前面的结点。
  • cur 始终是固定的,以 cur.next 连接 下一个结点( tmp.next
class Solution { // java  头插法public ListNode reverseBetween(ListNode head, int left, int right) {ListNode dummy = new ListNode(0, head);ListNode pre = dummy;for (int i = 0; i < left - 1; ++i) {pre = pre.next;}ListNode cur = pre.next;for (int j = 0; j < right - left; ++j) {ListNode tmp = cur.next;  // tmp始终记录cur.next;cur.next = tmp.next;   // cur 是固定不移动的,始终指向 ‘2’tmp.next = pre.next;   // 上一步使用tmp.next,此处立即赋值 tmp.next;pre.next = tmp;        // pre 是固定不移动的}                          // 上一步使用pre.next,此处立即赋值 pre.next;return dummy.next;}
}

92. 反转链表 II【穿针引线、头插法(tmp.next、pre.next 太妙了,绝绝子~)】相关推荐

  1. LeetCode 中等难度 92. 反转链表 II解题思路

    92. 反转链表 II 题目:中等难度 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. 示例: 输入: 1->2->3->4-& ...

  2. 92. 反转链表 II golang

    92. 反转链表 II 注意最后对于链表反转的操作,应该熟记 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. 示例: 输入: 1->2-&g ...

  3. [剑指offer][JAVA]面试题第[24]题[反转链表][递归][双指针][头插法]

    [问题描述][中等] 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点.示例:输入: 1->2->3->4->5->NULL 输出: 5->4 ...

  4. LeetCode 92 ——反转链表 II

    1. 题目 2. 解答 我们需要先找到第 m 个结点及其上一个结点,然后将从 m 到 n 的结点进行反转,最后依次将 m 到 n 反转后的结点和 n 之后的结点放入原链表中即可. 从前往后依次遍历 m ...

  5. 92. 反转链表 II(翻转部分链表)

    题目: 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. 方法:双指针+穿针引线 函数代码: class Solution {public:List ...

  6. 27. Leetcode 92. 反转链表 II (链表-反转链表)

    给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right .请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 .示例 1 ...

  7. Leetcode 92 反转链表 II (每日一题 20210726)

    给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right .请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 .示例 1 ...

  8. LeetCode 92. 反转链表 II(双指针)

    1. 题目 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. 示例:输入: 1->2->3->4->5->NULL, ...

  9. 92. 反转链表 II

    给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right .请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 . 示例 ...

最新文章

  1. mybatis中ResultSetHandler的设计与实现
  2. 去掉我的电脑中WPS,百度云,360,爱奇艺盘符
  3. Mac 安装多个python环境
  4. BZOJ4012 [HNOI2015]开店
  5. Spring [CVE-2022-22965]漏洞处理
  6. 32位和64位机器上C语言数据类型的大小
  7. 【华为云技术分享】云图说 | 华为云智能边缘平台IEF:智能边缘 让AI触手可及
  8. webview设置请求时长_41个路口智能识别“公交信号” 66面电子屏告诉您乘公交车优先时长...
  9. GDALSetProjection使用的一个注意事项
  10. vue中使用scss
  11. 何川L3管理课_模块3_追进展(执行)
  12. Windows7 密码破解
  13. 项目管理与敏捷开发-流程之间的区别
  14. 思科3650交换机的密码恢复
  15. 计算机显示 亮度怎么调整,电脑屏幕亮度调整一直显示怎么办
  16. 二烷基二硫代磷酸锌添加剂的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  17. 后台管理系统纯前端模板
  18. 如何保养COMAPQ/HP 电池
  19. 数据结构课程设计--实验室设备管理系统(c语言)
  20. AD域实现统一用户管理

热门文章

  1. 如何更改 Mac 文件的默认打开方式
  2. 运放相位(频率)补偿电路设计
  3. 【踩坑专栏】idea的language level默认为5解决办法
  4. 职工管理系统c语言课设需求分析,人力资源管理系统需求分析报告及系统架构图...
  5. linux 命令之du与df
  6. 第三代半导体将写入“十四五规划”,这些公司有涉及
  7. libflex cydia源
  8. DSPE-PEG-FA Folic acid PEG DSPE 磷脂-聚乙二醇-叶酸溶于有机溶剂
  9. canoe教学_[转载]独木舟教学-新手必修课
  10. 2021-09-21 WPF上位机 37-手写笔事件