首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

删除链表的倒数N节点

删除链表的倒数N节点 给定一个链表,删除链表的倒数 n节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2....当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗?...---- 解法一 先遍历一遍计算链表长度;再遍历一遍删除倒数n节点 ? 解法二:进阶 只遍历一遍链表,能否解决这个问题?...class Solution { public: ListNode* removeNthFromEnd(ListNode* head, int n) { assert(n >=...示例 1: 输入: 1->2 输出: false 示例 2: 输入: 1->2->2->1 输出: true 进阶: 你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?

44431
您找到你想要的搜索结果了吗?
是的
没有找到

删除链表的倒数n节点

node2.next = node3; //        node3.next = node4; //        node4.next = node5;         int n...p2 = head;         //p2先走n步         for (int i = 0; i < n; i++) {             p2 = p2.next;         ...}         //当指针p2走完n步以后,让指针p2和p1同时向前走,直到p2走到最后一个节点,即p2->next=NULL         // 整个过程p2和p1之间相隔n-1个节点         ...= null) {             p1 = p1.next;             num++;         }         //判断是第几个节点         int index...= num - n + 1;         //总数减去倒数的数n,就是要遍历的位置了         for (int i = 1; i < index - 1; i++) {

38620

删除链表的倒数N节点,并返回链表的头节点

节点就是从开头数(L-N+1)个节点,将此节点的next指向下下节点就可以了。...2、第一个指针节点向前移动N+1步,第二个指针保持不动,这时两个指针相隔N节点的距离 3、同时移动两个指针保持恒定的距离,直到第一个指针到达最后一个节点。...4、这时第二个指针所指向的节点的下一个节点就是要删除的节点(倒数N节点),将第二个指针指向的节点的next指向下下个节点就完成了。 ?...secound = dummy;//第二个指针 for(int i = 0; i<n; i++){//向前移动第一个之指针N+1步 first= first.next; } while(first...,这时在N步将指针指向的节点的next指向下下个节点就完成了。

45420

删除链表的倒数N节点

题目描述 给定一个链表,删除链表的倒数 n节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2....当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。 进阶: 你能尝试使用一趟扫描实现吗?...思路 双指针,指针A先移动n次, 指针B再开始移动。...当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的下一个节点指向下下个节点

28230

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 和 slow 之间间隔了 n-1个节点,即 fast 比 slow超前了 n节点。 在这之后,我们同时使用fast 和 slow对链表进行遍历。...当fast遍历到链表的末尾(即 fast为空指针)时,slow 恰好指向倒数 nn个节点。 如果我们能够得到的是倒数 n节点的前驱节点而不是倒数 n节点的话,删除操作会更加方便。

27010

《剑指offer》23天:删除链表倒数N节点

比如原链表为a->b->c,则加了哨兵节点的链表即为x->a->b>c,如下图: ? 那我们为什么需要引入哨兵节点呢?...但是此时若是删除第一个元素的话,你就很难进行了,因为按道理来讲,此时第一个元素的前一个元素就是nil(空的),如果使用pre就会报错。那如果此时你设置了哨兵节点的话,此时的pre就是哨兵节点了。...下面我们看一道题目,看一下哨兵节点的应用 02、题目讲解 19题:删除链表倒数N节点 给定一个链表,删除链表的倒数 n节点,并且返回链表的头结点。...示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。...思路分析: 首先我们思考,让我们删除倒数N个元素,那我们只要找到倒数N个元素就可以了,那怎么找呢?我们只需要设置两个指针变量,中间间隔N-1元素。

60130

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

---- NO.19 删除链表的倒数N节点 一、写在前面 刷题模块的初衷是恶补数据结构和算法,不管自己的公众号怎样变化,刷题这个模块一定会保留下去,期待自己能成为offer收割机。...LeetCode 第十八题传输门:【LeetCode】(No.018) 四数之和天给大家分享的是LeetCode 第十九题:删除链表的倒数N节点。...二、今日题目 给定一个链表,删除链表的倒数 n节点,并且返回链表的头结点。...示例: 给定一个链表: 1->2->3->4->5,和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5. 说明: 给定的 n 保证是有效的。...三、 分析 这个题目的大意就是删除一个单链表中的倒数N个结点,这个题目还是比较简单的下面是具体的解题思路。

36430

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

题目 给定一个链表,删除链表的倒数 n节点,并且返回链表的头结点 示例 给定一个链表: 1->2->3->4->5, 和 n = 2 当删除了倒数第二个节点后,链表变为 1->2->3->5 思考...= nil{ len++W temp1 = temp1.Next } //倒数n个就等正数的(len-n)+1个 m := len- n...分析上面的图声明三个变量,one,two两个指针变量,i是一个int变量,one和two指向链表的头节点,one开始遍历链表,每遍历一个节点,变量i进行加1,当变量i大于n时(就是倒数n个,在这里n是...//当n是倒数最大时(也就是正数第一个),i是不会大于n的 //这其实删除的是链表的头节点 if i< n{ head = head.Next return...} 好了,删除链表倒数N节点就分享到这里,有收获的帮忙关注,转发,点赞呗,非常感谢。

1.3K30

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

No.19 删除链表的倒数N节点 题目: 给定一个链表,删除链表的倒数 n节点,并且返回链表的头结点。 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2....思路一 :首先利用一次循环得到链表长度 ,之后根据题目输入的参数在指定位置进行删除操作 ,即要删除 L-n+1 个节点 ,只需要将 L-n节点的指针指向 L-n+2 个节点即可跳过要删除的节点...(在 L-n+2 个节点存在的情况下 ,不存在即要删除倒数第一个节点 ,是个特例情况 。)...思路二:这里考虑用两个 ‘指针’ 进行操作 ,要删除倒数 n节点 ,即与最后一个节点的间隔是固定的 (n-1)。...这里先将两个指针同时指向头结点 ,然后第一个指针后移对应位置 ,使得两个指针间隔为 n-1 。之后两个指针同步后移 ,当先移动的指针指到最后的时候 ,第二个指针进行跳过删除操作 ,即可实现目的 。

49920
领券