首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

链表-如何高效删除链表倒数N节点

题目 给定一链表,删除链表倒数 n 节点,并且返回链表头结点 示例 给定一链表: 1->2->3->4->5, 和 n = 2 当删除了倒数第二节点后,链表变为 1->2->3->5 思考...(时间复杂度O(n),空间复杂度O(1)) 解法一 相信很多人都明白链表要删除一节点做法是把要删除节点前驱节点指向要删除节点后驱节点,则完成删除一节点操作,如下图所示:我们删除节点为2...我们知道,链表不像数组那样,没有下标,要想知道链表长度,只能从链表头部开始遍历直到结束来统计链表长度,我们现在知道要删除链表倒数N节点,我们首先想到,要是知道链表长度就好了啊,看如下代码 //...,整个链表进行了两次for循环,第一次求出链表长度,第二次用来找到要删除倒数n元素,有没有更好办法呢,只遍历一次?...分析上面的图声明三变量,one,two两指针变量,i是一int变量,one和two指向链表节点,one开始遍历链表,每遍历一节点,变量i进行加1,当变量i大于n时(就是倒数n,在这里n

1.3K30

19 删除链表倒数N节点

01 题目信息 题目地址: https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 给定一链表,删除链表倒数 n...示例: 给定一链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二节点后,链表变为 1->2->3->5. 说明:给定 n 保证是有效。...02 解法一:倒数转正数 很自然只能通过头节点head多次next,找到要被删除节点,但我们获取定位是倒数第几个。...它就是我们处理链表经典方式快慢指针,我们用两指针,快指针领先n次(倒数次数),慢指针起点,同时迭代。当快指针到了终点,那慢指针岂不是到了倒数n。...fast起点可以取后一格那么slow就能拿到倒数n前一节点 ?

31030

删除链表倒数N节点

题目描述 给定一链表,删除链表倒数 n 节点,并且返回链表头结点。 示例: 给定一链表: 1->2->3->4->5, 和 n = 2....当删除了倒数第二节点后,链表变为 1->2->3->5. 说明: 给定 n 保证是有效。 进阶: 你能尝试使用一趟扫描实现吗?...当A到达null时候, 指针b位置正好是倒数n 我们可以设想假设设定了双指针p和q的话,当q指向末尾NULL,p与q之间相隔元素个数为n时,那么删除掉p下一指针就完成了要求。...设置虚拟节点dummyHead指向head 设定双指针p和q,初始都指向虚拟节点dummyHead 移动q,直到p与q之间相隔元素个数为n 同时移动p与q,直到q指向为NULL 将p下一节点指向下下个节点...关键点解析 链表这种数据结构特点和使用 使用双指针 使用一dummyHead简化操作 代码 /* * @lc app=leetcode id=19 lang=javascript

27930

链表i个位置插入节点(阿里+腾讯等面试题总结)

时间:2014.04.26 地点:基地 ————————————————————————— 一、题目 题目是非常easy和基础,就是链表i个位置插入节点。要求写代码,5分钟之内完毕。...————————————————————————— 二、分析 1.先依照一般步骤,我们要得到链表i个位置指针。...个位置指针写了两版本号,即为提供通用性,当然这里对于题目要求是多余,由于题目要求是肯定要通过指针改动链表。...个人比較喜欢固定一种模式,即经常使用代码编写模式,假设算法实现原理是一样,仅仅是代码表现上有所差别,认为就不是必需花心思耍花样。...=nullptr;cursor=curosr->get_link()) { ....... } 2.提供两版本号编号定位节点函数或者匹配定位节点函数 发布者:全栈程序员栈长,转载请注明出处

73030

Leetcode No.19 删除链表倒数N节点

一、题目介绍 给定一链表,删除链表倒数 n 节点,并且返回链表头结点。 示例: 给定一链表: 1->2->3->4->5, 和 n = 2....二、解题思路 由于我们需要找到倒数 n 节点,因此我们可以使用两指针 fast 和 slow同时链表进行遍历,并且 fast 比 slow 超前 nn 节点。...当 fast 遍历到链表末尾时,slow就恰好处于倒数 n 节点。 具体地,初始时 fast和 slow均指向头节点。我们首先使用 fast 链表进行遍历,遍历次数为 n。...当fast遍历到链表末尾(即 fast为空指针)时,slow 恰好指向倒数 nn节点。 如果我们能够得到是倒数 n 节点前驱节点而不是倒数 n 节点的话,删除操作会更加方便。...因此我们可以考虑初始时将slow 指向哑节点,其余操作步骤不变。这样一来,当 fast遍历到链表末尾时,slow下一节点就是我们需要删除节点

26810

【LeetCode】(No.019)删除链表倒数N节点

---- NO.19 删除链表倒数N节点 一、写在前面 刷题模块初衷是恶补数据结构和算法,不管自己公众号怎样变化,刷题这个模块一定会保留下去,期待自己能成为offer收割机。...LeetCode 第十八题传输门:【LeetCode】(No.018) 四数之和天给大家分享是LeetCode 第十九题:删除链表倒数N节点。...前十题汇总:【LeetCode】打卡记录(NO.1-10)为面试而生,期待你加入。 二、今日题目 给定一链表,删除链表倒数 n 节点,并且返回链表头结点。...三、 分析 这个题目的大意就是删除一链表倒数N结点,这个题目还是比较简单下面是具体解题思路。...一次遍历链表,用两指针p,q分别指向头结点,然后先将其中一指针p向后移动N位置,再将p,q同时往后移动,当指针p移动到末尾时,q指针指向结点即为我们要删除结点。

36130

每日三题-合并两有序链表、相交链表、删除链表N节点

‍个人主页: 才疏学浅木子 ‍♂️ 本人也在学习阶段如若发现问题,请告知非常感谢 ‍♂️ 本文来自专栏: 算法 算法类型:Hot100题 每日三题 删除链表倒数N结点 合并两有序链表...相交链表 删除链表倒数N结点 解法一 使用双指针 新建一节点,避免出现删除头节点出现异常情况 比如[1],1 就会出现问题因为slow.next = slow.next.next...中slow.next会报空指针异常 而新建一节点后 [newHead,1],1,slow为newhead,那就不会出现空指针异常,并且这个时候slow就是要删除节点前一节点 不需要维护一pre...= 0){ // 找到比他快n节点 quick = quick.next; n--; } while(quick !...,如果为空了,则将当前节点设置为另一链表节点 原理 有相交 A [a1,a2,c1,c2,c3] B [b1,b2,b3,c1,c2,c3] 则当ta走完A链表时候走长度为a+c,

21330

Leetcode打卡 | No.19 删除链表倒数N节点

No.19 删除链表倒数N节点 题目: 给定一链表,删除链表倒数 n 节点,并且返回链表头结点。 示例: 给定一链表: 1->2->3->4->5, 和 n = 2....---- 之前我们说过 C 和 C++ 中指针是好东西 ,解决这类问题很是方便 。然而 python 是没有这个概念 ,包括链表也是模拟链表相关操作 。...思路一 :首先利用一次循环得到链表长度 ,之后根据题目输入参数指定位置进行删除操作 ,即要删除 L-n+1 节点 ,只需要将 L-n 节点指针指向 L-n+2 节点即可跳过要删除节点...( L-n+2 节点存在情况下 ,不存在即要删除倒数第一节点 ,是特例情况 。)...思路二:这里考虑用两 ‘指针’ 进行操作 ,要删除倒数 n 节点 ,即与最后一节点间隔是固定n-1)。

49620

LeetCode-19 删除链表倒数N节点

删除链表倒数N节点 > 难度:中等 > 分类:链表 > 解决方案:双指针 今天我们学习19题删除链表倒数N节点,这是一道中等题。这个题属于面试中高频题,一定要能手写出来。...下面我们看看这道题题目描述。 题目描述 给定一链表,删除链表倒数 n节点,并且返回链表头结点。...这个题让我们删除链表倒数 n节点,并且返回头节点。题目中说明部分提到给定 n保证是有效,因此 n值小于等于链表长度。...最基本方法,我们可以先遍历一次链表,统计链表长度 len,则删除节点位置为 len-n+1。然后找到删除节点位置前一节点(位置为 len-n)节点进行删除即可。...值得注意是,当删除结点为第一节点,则 fast==null,因此 fast走 n步后需要判断 fast是否为 null,如果为 null则直接返回 fast.next。

44410

删除链表倒数N节点 | Leetcode题解

题目描述 给定一链表,删除链表倒数 n 节点,并且返回链表头结点。 示例: 给定一链表: 1->2->3->4->5, 和 n = 2....当删除了倒数第二节点后,链表变为 1->2->3->5. 说明: 给定 n 保证是有效。 进阶: 你能尝试使用一趟扫描实现吗?...当 A 到达 null 时候, 指针 B 位置正好是倒数 n。这个时候将 B 指针指向 B 下下个指针即可完成删除工作。...n 同时移动 p 与 q,直到 q 指向为 NULL 将 p 下一节点指向下下个节点 关键点解析 链表这种数据结构特点和使用 使用双指针 使用一 dummyHead 简化操作 代码 代码支持...所有题目并非全部为本人解答,部分为复习学习中整理提取其他解题作者优秀笔记,便于大家学习共同进步,如有侵权,请联系删除。 - 完 - 关注公众号「前端布道师」,做前端技术传播者!

32010
领券