• LeetCode --- 链表系列 --- 删除链表中的节点


    删除链表中的节点

    题目

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

    你将只被给定要求被删除的节点。


    现有一个链表 -- head = [4,5,1,9],它可以表示为:


    说明:
    链表至少包含两个节点。

    链表中所有节点的值都是唯一的。

    给定的节点为非末尾节点并且一定是链表中的一个有效节点。

    不要从你的函数中返回任何结果。


    示例

    示例 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.
    

    来源:力扣(LeetCode)

    链接:https://leetcode-cn.com/problems/delete-node-in-a-linked-list

    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


    解题思路

    渐进解法 1

    1、可以直接将 node 替换成 node.next
       即 node 的 val 替换成功 node.next 的 val
       即 node 的 next 替换成功 node.next 的 next
    

    渐进解法 2

    1、使用 浏览器原生 api 进行浅拷贝
       Object.assign(node, node.next)
    

    题解

    渐进解法 1

    // 用时较好,内存消耗较好
    执行用时: 68 ms
    内存消耗: 35.4 MB
    let deleteNode = function(node) {
        // node 为当前需要删除的节点
        // 执行删除操作,实际是让 node 节点的下一个节点 node.next 前进一位
        // 我们可以直接将 node 替换成 node.next
        // 即 node 的 val 替换成功 node.next 的 val
        // 即 node 的 next 替换成功 node.next 的 next
        node.val = node.next.val
        node.next = node.next.next
    }
    

    渐进解法 2

    // 用时较好,内存消耗较好
    执行用时: 68 ms
    内存消耗: 35.4 MB
    let deleteNode = function(node) {
        // 或者浅拷贝
        Object.assign(node, node.next)
    }
    

    错误题解:

    let deleteNode = function(node) {
        // 错误解法:
        // 原本 局部变量 node 存储的是外部链表对象的 内存地址
        // 使用 node = node.next 是对 局部变量 node 的重新赋值, node 不再指向 外部链表内存地址
        // 外部链表不会改变,所以这么写是不行的
        node = node.next
    }
    

  • 相关阅读:
    webpack 3 零基础入门教程 #3
    webpack 3 零基础入门教程 #2
    webpack 3 零基础入门教程 #1
    webpack 3 零基础入门教程 #4
    'System.Array' does not contain a definition for 'ToArray' and no extension method 'ToArray' accepting a first argument of type 'System.Array' could be found (are you missing a using directive or an a
    Excel将两列依次合并为一列
    Unity3D射线的方向
    关于非奇异矩阵
    Unity3D获取游戏屏幕大小
    JS中的路径问题
  • 原文地址:https://www.cnblogs.com/linjunfu/p/12856261.html
Copyright © 2020-2023  润新知