92. 反转链表 II【穿针引线、头插法(tmp.next、pre.next 太妙了,绝绝子~)】
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.next
和pre.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 太妙了,绝绝子~)】相关推荐
- LeetCode 中等难度 92. 反转链表 II解题思路
92. 反转链表 II 题目:中等难度 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. 示例: 输入: 1->2->3->4-& ...
- 92. 反转链表 II golang
92. 反转链表 II 注意最后对于链表反转的操作,应该熟记 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. 示例: 输入: 1->2-&g ...
- [剑指offer][JAVA]面试题第[24]题[反转链表][递归][双指针][头插法]
[问题描述][中等] 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点.示例:输入: 1->2->3->4->5->NULL 输出: 5->4 ...
- LeetCode 92 ——反转链表 II
1. 题目 2. 解答 我们需要先找到第 m 个结点及其上一个结点,然后将从 m 到 n 的结点进行反转,最后依次将 m 到 n 反转后的结点和 n 之后的结点放入原链表中即可. 从前往后依次遍历 m ...
- 92. 反转链表 II(翻转部分链表)
题目: 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. 方法:双指针+穿针引线 函数代码: class Solution {public:List ...
- 27. Leetcode 92. 反转链表 II (链表-反转链表)
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right .请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 .示例 1 ...
- Leetcode 92 反转链表 II (每日一题 20210726)
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right .请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 .示例 1 ...
- LeetCode 92. 反转链表 II(双指针)
1. 题目 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明: 1 ≤ m ≤ n ≤ 链表长度. 示例:输入: 1->2->3->4->5->NULL, ...
- 92. 反转链表 II
给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right .请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 . 示例 ...
最新文章
- mybatis中ResultSetHandler的设计与实现
- 去掉我的电脑中WPS,百度云,360,爱奇艺盘符
- Mac 安装多个python环境
- BZOJ4012 [HNOI2015]开店
- Spring [CVE-2022-22965]漏洞处理
- 32位和64位机器上C语言数据类型的大小
- 【华为云技术分享】云图说 | 华为云智能边缘平台IEF:智能边缘 让AI触手可及
- webview设置请求时长_41个路口智能识别“公交信号” 66面电子屏告诉您乘公交车优先时长...
- GDALSetProjection使用的一个注意事项
- vue中使用scss
- 何川L3管理课_模块3_追进展(执行)
- Windows7 密码破解
- 项目管理与敏捷开发-流程之间的区别
- 思科3650交换机的密码恢复
- 计算机显示 亮度怎么调整,电脑屏幕亮度调整一直显示怎么办
- 二烷基二硫代磷酸锌添加剂的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 后台管理系统纯前端模板
- 如何保养COMAPQ/HP 电池
- 数据结构课程设计--实验室设备管理系统(c语言)
- AD域实现统一用户管理
热门文章
- 如何更改 Mac 文件的默认打开方式
- 运放相位(频率)补偿电路设计
- 【踩坑专栏】idea的language level默认为5解决办法
- 职工管理系统c语言课设需求分析,人力资源管理系统需求分析报告及系统架构图...
- linux 命令之du与df
- 第三代半导体将写入“十四五规划”,这些公司有涉及
- libflex cydia源
- DSPE-PEG-FA Folic acid PEG DSPE 磷脂-聚乙二醇-叶酸溶于有机溶剂
- canoe教学_[转载]独木舟教学-新手必修课
- 2021-09-21 WPF上位机 37-手写笔事件