美文网首页
链表 / 删除链表中的节点

链表 / 删除链表中的节点

作者: 原创迷恋者 | 来源:发表于2019-08-08 16:51 被阅读0次

请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。

示例 1:
输入: head = [4,5,1,9], node = 5
输出: [4,1,9]
解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.

示例 2:
输入: head = [4,5,1,9], node = 1
输出: [4,5,9]
解释: 给定你链表中值为 1 的第三个节点,那么在调用了你的函数之后,该链表应变为 4 -> 5 -> 9.

说明:
1.链表至少包含两个节点。
2.链表中所有节点的值都是唯一的。
3.给定的节点为非末尾节点并且一定是链表中的一个有效节点。
4.不要从你的函数中返回任何结果。

难点:
该题最难的地方在于,函数的输入只是需要被删除的节点的值,但是若要进行链表的删除操作,需要将给定节点的前一个阶段的next值赋值为该节点的下一个节点。如果采用这种方式,则将无法完成任务。

因此,必然不可能采用传统方式,需要改变思维方式。最后的检查方式只是看完成操作的链表中是否已经没有给定要删除的那个数字。既然我们无法得到要删除节点的前一个节点,却能向后遍历,我们可以这样操作。

  1. 将要删除节点赋值为该节点的后一个节点的值
  2. 删除掉后一个节点,即将本节点的next指针指向后一个节点的后一个节点。

即可完成操作。

代码如下:

class deleteNode {
    public void deleteNode(ListNode node) {
        // 赋值
        ListNode next = node.next;
        node.val = next.val;
        // 删除
        node.next = next.next;
    }  
}

相关文章

  • 数据结构与算法之链表面试题(四)

    目录 删除链表中的节点反转一个链表递归实现迭代(非递归)实现 一 删除链表中的节点 237. 删除链表中的节点 说...

  • 18-删除链表节点、删除链表重复节点

    1. 删除链表节点 2. 删除链表中的重复节点 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没...

  • leecode刷题(20)-- 删除链表中的节点

    leecode刷题(20)-- 删除链表中的节点 删除链表中的节点 描述: 请编写一个函数,使其可以删除某个链表中...

  • 算法相关笔记,持续更新中...

    单链表 1.删除单链表中的指定节点: 2.单链表中删除指定数值的节点方法一:利用栈 3.单链表中删除指定数值的节点...

  • 删除链表中重复的节点

    删除链表中重复的节点在一个排序的链表中,如何删除重复的节点?

  • Leetcode总结 -- 链表

    目录 链表的基本操作 改/遍历:while(?) 查: 返回倒数K个节点 增/删除:反转链表,删除链表中的重复节点...

  • 1.单链表常用操作

    1.删除单链表中的指定节点 2.删除单链表中指定值的节点 (1). 利用栈删除单链表指定值的节点 (2). 用普通...

  • 链表删除--二级指针

    教科书上的链表删除节点 也可以这样(leveldb中LRUCache链表使用的该方法删除节点)

  • 237. Delete Node in a Linked Lis

    删除链表中的节点,用于删除单链表中某个特定节点。在设计函数时需要注意,无法访问链表头节点head,只能直接访问要被...

  • 链表相关算法 - go语言实现

    链表结构 反转链表 (移除节点)删除链表中等于给定值 val 的所有节点 合并两个有序链表 链表成环检测 删除链表...

网友评论

      本文标题:链表 / 删除链表中的节点

      本文链接:https://www.haomeiwen.com/subject/aiixjctx.html