题目


题解

一种怪异的节点删除方式

本题的思路很简单,举例就能说明具体的做法。

例如,链表1->2->3->null,只知道要删除节点2,而不知道头节点。那么只需把节点2 的值变成节点3 的值,然后在链表中删除节点3 即可。
这道题目出现的次数很多,这么做看起来非常方便,但 其实是有很大问题的

存在的问题一

这样的删除方式 无法删除最后一个节点。还是以原示例来说明,如果知道要删除节点3,而不知道头节点。但它是最后的节点,根本没有下一个节点来代替节点3 被删除,那么只有让节点2 的next 指向null 这一种办法,而我们又根本找不到节点2,所以根本没法正确删除节点3。读者可能会问,我们能不能把节点3 在内存上的区域变成null 呢?这样不就相当于让节点2 的next 指针指向了null,起到节点3 被删除的效果了吗?不可以。null 在系统中是一个特定的区域,如果想让节点2 的next 指针指向null,必须找到节点2。

存在的问题二

这种删除方式在本质上根本就不是删除了node 节点,而是把node 节点的值改变,然后删除node 的下一个节点,在 实际的工程中可能会带来很大问题

  • 比如,工程上的一个节点可能代表很复杂的结构,节点值的复制会相当复杂,或者可能改变节点值这个操作都是被禁止的;

  • 再如,工程上的一个节点代表提供服务的一个服务器,外界对每个节点都有很多依赖,比如,示例中删除节点2 时,其实影响了节点3 对外提供的服务。

这种删除方式具体看如下代码。

class ListNode {int val;ListNode next;ListNode(int x) {val = x;}
}public class Solution {public void deleteNode(ListNode node) {node.val = node.next.val;node.next = node.next.next;}
}

leetcode 237. 删除链表中的节点(左神算法:一种怪异的节点删除方式、此方法存在的问题分析)相关推荐

  1. LeetCode 237. 删除链表中的节点(Python3)

    题目: 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点. 现有一个链表 -- head = [4,5,1,9],它可以表示为: 示例 1: 输入: head ...

  2. 22. Leetcode 237. 删除链表中的节点 (链表-基础操作类-删除链表的节点)

    请编写一个函数,用于 删除单链表中某个特定节点 .在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 .题目数据保证需要删除的节点 不是末尾节点 .示例 1:输入: ...

  3. LeetCode 237. 删除链表中的节点(思维)

    请编写一个函数,用于 删除单链表中某个特定节点 .在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 . 题目数据保证需要删除的节点 不是末尾节点 . https: ...

  4. LeetCode 237. 删除链表中的节点

    原题链接 解题思路:后面的的结点内容覆盖前面的结点内容 /*** Definition for singly-linked list.* struct ListNode {* int val;* Li ...

  5. 237. 删除链表中的节点【我亦无他唯手熟尔】

    237. 删除链表中的节点 请编写一个函数,用于 删除单链表中某个特定节点 .在设计函数时需要注意,你无法访问链表的头节点 head ,只能直接访问 要被删除的节点 . 题目数据保证需要删除的节点 不 ...

  6. 237. 删除链表中的节点 golang

    删除链表的节点 https://leetcode-cn.com/problems/delete-node-in-a-linked-list 最优解 把下一个节点的值移动到当前删除节点,然后更改当前节点 ...

  7. 237. 删除链表中的节点(C语言)

    请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点.传入函数的唯一参数为 要被删除的节点 . 现有一个链表 – head = [4,5,1,9],它可以表示为: 示例 1: 输入:head = ...

  8. 【解题报告】Leecode 237. 删除链表中的节点——Leecode每日一题系列

    今天是坚持每日一题打卡的第八天 题目链接:https://leetcode-cn.com/problems/minimum-operations-to-convert-number/ 题解汇总:htt ...

  9. 237删除链表中的节点(单链表基本操作)

    1.题目描述 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点. 说明: 链表至少包含两个节点. 链表中所有节点的值都是唯一的. 给定的节点为非末尾节点并且一定 ...

最新文章

  1. python legb_Python变量作用域LEGB用法解析
  2. springboot小笔记
  3. MATLAB(六)数据处理
  4. 智器SmartQ T7实体店试用体验
  5. 小括号教学设计导入_如何在教学中凸显出学生的主体地位呢?原来只需要做到这几点即可...
  6. java课程设计qq,模块java课程设计报告qq聊天
  7. 强烈安利 uTools 我的生产力工具
  8. 二分查找 —— 从三分支到二分支
  9. [ jenkins ] git+jenkins+maven + ansible 部署java程序
  10. IDC 监控技术介绍
  11. WebRAY权小文:产品就是工程师的尊严
  12. 使用Tor绕过防火墙进行远程匿名访问
  13. get技能 TCP(ip socket 关系)通信的三次握手和四次撒手的详细流程(顿悟)
  14. OpenCV:03图像的算数运算
  15. NETDMIS5.0笛卡尔坐标系和矢量2023
  16. 企业跨境电商平台服务解决方案,跨境电子商务贸易业务框架搭建运维
  17. Android-AQS
  18. ubuntu添加系统调用
  19. 网易云课堂---php基础第一天
  20. SVN Commit的时候提示Unexpected HTTP status 413 'Request Entity Too Large' on xxxx

热门文章

  1. HDU - 5017 Ellipsoid(三分套三分/模拟退火)
  2. python爬取豆瓣电影TOP250
  3. HDU1524(博弈--有向无环图SG函数)
  4. 使用PowerDbg自动化Windbg调试过程
  5. cocos2d-x游戏实例(24)-简易动作游戏(2)
  6. cocos2d-x游戏实例(15)-纵版射击游戏(2)
  7. C++ 虚函数与纯虚函数
  8. live555 源码分析:基础设施
  9. 第05讲:多路加速,了解多线程基本原理
  10. python之闭包的实现