1 题目

237. 删除链表中的节点

难度简单

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

题目数据保证需要删除的节点 不是末尾节点

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

示例 3:

输入:head = [1,2,3,4], node = 3
输出:[1,2,4]

示例 4:

输入:head = [0,1], node = 0
输出:[1]

示例 5:

输入:head = [-3,5,-99], node = -3
输出:[5,-99]

提示:

  • 链表中节点的数目范围是 [2, 1000]
  • -1000 <= Node.val <= 1000
  • 链表中每个节点的值都是唯一的
  • 需要删除的节点 node 是 链表中的一个有效节点 ,且 不是末尾节点。

2 思路

我们在学习单链表删除的时候,一般都是从头结点开始找起,找到要删除结点的前置结点。

但是在本题中,它并不给我们头结点,而是给我们要删除的结点指针,这个时候我们需要转换思路,即将后一个结点的值赋给要删除的结点,然后把后一个结点删除。

这样,我们就巧妙地偷天换日地解决了这个问题。

既然知道解法了,我们开始写代码吧。

3 代码

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:void deleteNode(ListNode* node) {ListNode * cur = node;//移动指针cur = node->next;//赋值node->val = cur->val;//删除结点node->next = cur->next;delete(cur);}
};

4 小结

综上所述,这道题的时间复杂度为O(1),空间复杂度也为O(1)。

每日一题——leetcode237 删除链表中的结点相关推荐

  1. leetcode刷题:删除链表中的节点

    题目: 分析: 删除链表中的节点的常见的方法是定位到待删除节点的上一个节点,修改上一个节点的 \textit{next}next 指针,使其指向待删除节点的下一个节点,即可完成删除操作. 这道题中,传 ...

  2. leetcode237 删除链表中的节点(你意想不到的做法,注意细节)

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

  3. Leetcode-237:删除链表中的节点

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

  4. LeetCode每日一题 19. 删除链表的倒数第N个节点

    题目链接 思路 双指针,保持两个指针距离为n.引入头节点方便统一处理. class Solution {public:ListNode* removeNthFromEnd(ListNode* head ...

  5. java中删除node节点_[Java]LeetCode237. 删除链表中的节点 | Delete Node in a Linked List

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  6. 给定链表中间某结点指针,删除链表中该结点

    题目 实现一个算法来删除单链表中间的一个结点,只给出指向那个结点的指针. 例子: 输入:指向链表a->b->c->d->e中结点c的指针 结果:不需要返回什么,得到一个新链表: ...

  7. python删除链表中重复的节点_Java编程删除链表中重复的节点问题解决思路及源码分享...

    一. 题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 二. 例子 输入链表:1->2->3->3->4->4-&g ...

  8. 面试题18: 删除链表节点:删除链表中重复的节点

    /******************************************************************* *<剑指Offer--名企面试官精讲典型编程题>C ...

  9. 数据结构初阶(4)(OJ练习【判断链表中是否有环、返回链表入口点、删除链表中的所有重复出现的元素】、双向链表LinkedList【注意事项、构造方法、常用方法、模拟实现、遍历方法、顺序表和链表的区别)

    接上次博客:数据结构初阶(3)(链表:链表的基本概念.链表的类型.单向不带头非循环链表的实现.链表的相关OJ练习.链表的优缺点 )_di-Dora的博客-CSDN博客 目录 OJ练习 双向链表--Li ...

最新文章

  1. nc65语义模型设计_完整word版,NC数据加工做语义模型
  2. 动画 java_Java动画程序介绍
  3. 什么是MVP架构模式(Model、View、Presenter)?(软件设计模式MVC、MVVW)
  4. zcmu1540(二分)
  5. Castle.MircoKernel Class Diagram - Part I
  6. deb php7 fileinfo,linux安装php7.2扩展fileinfo
  7. 基于boost asio实现的支持ssl的通用socket框架
  8. 【Python】元组和列表相关知识总结
  9. java 超时异常_Java如何实现任务超时处理
  10. CentOS 7安装TigerVNC Server
  11. yolov2训练_YOLOv2 : YOLO9000:Better,Faster,Stronger解读
  12. 理解C语言——从小菜到大神的晋级之路(1)——引言:C语言的前世今生
  13. linux 文件系统简介
  14. 易语言服务器中转,让自己的电脑变成服务器,易语言远程文件传输器
  15. 11、ARM嵌入式系统:中断使能
  16. 排列组合解析与例题总结
  17. java oop 题目_JavaOOP试题JavaOOP试题.doc
  18. 伯俊软件获得阿里云原生核心授牌伙伴认证,共建新生态
  19. Python深度优先解决八数码问题
  20. cadence学习笔记 从ultra librarain网站下载封装并生成封装文件

热门文章

  1. UVa 11136 - Hoax or what
  2. 介绍我的一位同事的开源RSS阅读器
  3. 数据分析师 需求分析师_是什么让分析师出色?
  4. 标准化(Normalization)和归一化实现
  5. 5940. 从数组中移除最大值和最小值
  6. leetcode35. 搜索插入位置(二分搜索)
  7. HTML DOM方法
  8. photoshop cc_如何使用Photoshop CC将图片变成卡通
  9. mit景观生成技术_永远不会再为工作感到不知所措:如何使用MIT技术
  10. web动画_Web动画简介