[路飞]_leetcode-面试题02.03-删除中间节点

简介: leetcode-面试题02.03-删除中间节点

网络异常,图片无法展示
|


[题目地址][B站地址]


若链表中的某个节点,既不是链表头节点,也不是链表尾节点,则称其为该链表的「中间节点」。


假定已知链表的某一个中间节点,请实现一种算法,将该节点从链表中删除。


例如,传入节点 c(位于单向链表 a->b->c->d->e->f 中),将其删除后,剩余链表为 a->b->d->e->f


示例:


输入: 节点 5 (位于单向链表 4->5->1->9 中)
输出: 不返回任何数据,从链表中删除传入的节点 5,使链表变为 4->1->9
复制代码


通常在链表中删除某个节点的操作,是通过将该节点的前一个节点的 next 指针指向该节点的下一个节点来实现的


但是在本题中,链表是一个单向链表,而传入的唯一参数就是要删除的节点,所以没有办法拿到该节点的前一个节点


那如何实现删除该节点的操作呢?


解题思路如下:


  1. 将该节点的 val 更新为该节点的下一个节点的 val
  2. 遍历链表,重复第一步操作,直到链表的倒数第二个节点
  3. 此时,链表的倒数第二个节点的 val 等于链表尾节点的 val,通过以上操作,我们相当于完成了要删除节点的后续节点的向前移动的操作
  4. 此时,只需要将倒数第二个节点的 next 指针指向 null ,删除链表尾节点即可


整体过程如下:


网络异常,图片无法展示
|


代码如下:


var deleteNode = function(node) {
  // 将倒数第二个节点之前节点的val更新为它的下一个节点的val
  while(node.next.next){
    node.val = node.next.val;
    node = node.next;
  }
  // 将倒数第二个节点的val更新为尾节点的val
  node.val = node.next.val;
  // 删除链表尾节点
  node.next = null;
};
复制代码


至此我们就完成了 leetcode-面试题02.03-删除中间节点


如有任何问题或建议,欢迎留言讨论!

相关文章
|
3月前
LeetCode第二十四题(两两交换链表中的节点)
这篇文章介绍了LeetCode第24题的解法,即如何通过使用三个指针(preNode, curNode, curNextNode)来两两交换链表中的节点,并提供了详细的代码实现。
34 0
LeetCode第二十四题(两两交换链表中的节点)
|
3月前
Leetcode第十九题(删除链表的倒数第N个节点)
LeetCode第19题要求删除链表的倒数第N个节点,可以通过快慢指针法在一次遍历中实现。
50 0
Leetcode第十九题(删除链表的倒数第N个节点)
|
3月前
【LeetCode 46】450.删除二叉搜索树的节点
【LeetCode 46】450.删除二叉搜索树的节点
27 0
|
5月前
|
算法
LeetCode第24题两两交换链表中的节点
这篇文章介绍了LeetCode第24题"两两交换链表中的节点"的解题方法,通过使用虚拟节点和前驱节点技巧,实现了链表中相邻节点的交换。
LeetCode第24题两两交换链表中的节点
|
5月前
|
开发者 索引 Python
这些年背过的面试题——LeetCode
本文是技术人面试系列LeetCode篇,一文带你详细了解,欢迎收藏!
|
5月前
|
Python
【Leetcode刷题Python】剑指 Offer 22. 链表中倒数第k个节点
Leetcode题目"剑指 Offer 22. 链表中倒数第k个节点"的Python解决方案,使用双指针法找到并返回链表中倒数第k个节点。
62 5
|
5月前
|
Python
【Leetcode刷题Python】剑指 Offer 18. 删除链表的节点
Leetcode题目"剑指 Offer 18. 删除链表的节点"的Python解决方案,通过使用双指针法找到并删除链表中值为特定数值的节点,然后返回更新后的链表头节点。
50 4
|
4月前
|
Unix Shell Linux
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
本文提供了几个Linux shell脚本编程问题的解决方案,包括转置文件内容、统计词频、验证有效电话号码和提取文件的第十行,每个问题都给出了至少一种实现方法。
LeetCode刷题 Shell编程四则 | 194. 转置文件 192. 统计词频 193. 有效电话号码 195. 第十行
|
5月前
|
Python
【Leetcode刷题Python】剑指 Offer 32 - III. 从上到下打印二叉树 III
本文介绍了两种Python实现方法,用于按照之字形顺序打印二叉树的层次遍历结果,实现了在奇数层正序、偶数层反序打印节点的功能。
68 6
|
5月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
137 2

热门文章

最新文章