LeetCola_19_删除链表的倒数第N个节点_0723M
19 删除链表的倒数第N个节点
public ListNode removeNthFromEnd(ListNode head, int n) {
这道题 真的史诗级滑铁卢
本以为遇到以前的嫁接题
结果差点被空指针异常坑死
总是报错的是 [1] 1
只有一个节点的 删除倒数第一个
题目所带的测试用例没有[1] 2
如果使用这个测试用例 方法一会报错 方法二不会
方法一
- 建立哨兵节点 next指向head
- 建立快慢指针 均与哨兵相等
- 令快指针先走n+1步
- 然后快慢指针一起走
- 快指针指空的时候
- 慢指针指向倒数第n+1个(即 下一个为要删除的节点) 因为返回倒数第n个是令快指针先走n步 这里不要搞混
- 令slow的next指向slow的next的next(即 跳过slow的next)
- 返回哨兵的next
public ListNode removeNthFromEnd(ListNode head, int n) {ListNode sentinel = new ListNode(0);sentinel.next = head;ListNode fast = sentinel;ListNode slow = sentinel;for(int i = 0; i <= n; i++){// 注意这里的等于fast = fast.next;}while(fast != null) {fast = fast.next;slow = slow.next;}slow.next=slow.next.next;return sentinel.next;}
方法二(注释划线部分仍正常运行)
- 建立count
- 建立快慢指针 与头节点相等
- 如果head的next为空 // 空链表
- head为null
- 返回head
- 如果head的next的next为空 // 只有一个节点的链表
- 如果删除倒数第2个的节点
- 返回head的next
- 如果删除倒数第1个的节点
- 令head的next指向空
- 返回head
- 如果删除倒数第2个的节点
- 假如 fast的next不为空
- count++
- fast后移
- 如果count<=n
- continue
- 如果count>n
- slow后移一个
- 如果count<n // 这句才是防止空指针的关键
- 返回head的next
- slow的next指向slow的next的next
- 返回头节点
public ListNode removeNthFromEnd2(ListNode head, int n) {int count = 0;ListNode fast = head;ListNode slow = head;while(fast.next != null) {count++;fast = fast.next;if (count <= n) continue;else slow = slow.next;}if (count < n) return head.next;slow.next = slow.next.next;return head;}
LeetCola_19_删除链表的倒数第N个节点_0723M相关推荐
- 刻意练习:LeetCode实战 -- Task11. 删除链表的倒数第N个节点
背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...
- 19. 删除链表的倒数第N个节点
题目 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表 ...
- 常考数据结构与算法:删除链表的倒数第n个节点
题目描述 给定一个链表,删除链表的倒数第n个节点并返回链表的头指针 例如, 给出的链表为:1->2->3->4->5, n= 2.删除了链表的倒数第n个节点之后,链表变为1-& ...
- python 删除链表中倒数第N个节点
| 删除链表中倒数第N个节点 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 输入:head = [1,2,3,4,5], n = 2 输出:[1,2,3,5] 示例 2: 输入: ...
- LeetCode第19题;删除链表的倒数第N个节点
19. 删除链表的倒数第N个节点 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2.当删 ...
- LeetCode19删除链表的倒数第N个节点20有效的括号
维护不易,还请点赞支持,微信搜索bigsai 回复进群一起打卡. 19删除链表的倒数第N个节点 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1-> ...
- 删除链表的倒数第N个节点—leetcode19
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 ...
- java 链表删除头结点,删除链表的倒数第N个节点,并返回链表的头节点
面试的时候遇到了一个笔试题,是leetcode的原题,原题的连接: https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ ...
- LeetCode-19 删除链表的倒数第N个节点
文章目录 题目描述 我的解法 反思 优化 再次反思 再次优化 总结 Github 题目描述 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2- ...
- 2019-03-18-算法-进化(删除链表的倒数第N个节点)
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1 ...
最新文章
- 银行加速“去房地产化”
- 安装mysql 环境变量_win10系统安装mysql数据库后配置环境变量的图文教程
- 华科网络内容管理系统 v5.6 手机 PC
- php外壳函数,php 方法笔记
- 如何在Python中表示一个无限数?
- leetcode(153)寻找旋转排序数组中的最小值
- NetAssist连接报错!
- 微软雅黑有版权,UI设计有哪些免费的字体?
- 第一章 UCI数据集wine.data主成分分析PCA
- 快速搭建自己的人脸识别系统
- 小技巧|H5禁止手机虚拟键盘弹出
- Android composse 声明式UI,更简单的自定义
- 计算机程序设计c++ 9-7:类的抽象描述举例-汽车类及圆类设计
- 微博营销和软文营销的价值
- rhel7 http实例
- 敏捷转型行动笔记:内部敏捷教练实践
- PictureMerge
- DoTween常用动画效果
- 基于MYSQL的论坛管理系统数据库设计项目实战
- unicode和中文互转