每日一题——剑指offer18单链表的删除

如果您是第一次看我写的博客,可以给我点个赞并关注我吗,我会持续分享更多有意思的干货。

每日一题系列从今天开始,由于我是个算法小白,所以我会给你看看小白是怎么学的。💇

文章目录

    • 1 题目
    • 2 思路
    • 3 代码
    • 4 小结

1 题目

剑指 Offer 18. 删除链表的节点

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。

返回删除后的链表的头节点。

注意:此题对比原题有改动

示例 1:

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

示例 2:

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

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

说明:

题目保证链表中节点的值互不相同
若使用 C 或 C++ 语言,你不需要 free 或 delete 被删除的节点

2 思路

一开始没看清题意,我以为是有头结点的,所以导致我用示例编译的时候是对的,提交上去是错的。

首先我是这么想的,先用一根指针来寻找要删除结点的前置结点,找到后再用一根指针指向要删除的结点,最后改变指针走向释放即可。

但是还需要考虑删除的是首元节点的情况,如果是首元节点,那么返回的就不会是头指针而是头指针的下一个结点了,为此我们要提前判断该情况。

用一幅图来表明如下:

至于删除最后一个结点也不用担心,因为如果删除最后一个结点,那么如图所示p->next会指向空,这正是我们需要的。

3 代码

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode* deleteNode(ListNode* head, int val) {//删除首元节点ListNode *p = head; if(head->val == val)return head->next;//普通情况while(p->next->val != val)p = p->next;ListNode * q = p->next;p->next = q->next;return head;}
};

4 小结

这个算法的最好时间复杂度是O(1),最坏时间复杂度是O(n)。

好了,这道题实际上非常简单,但是我刚入门嘛,比较菜,这里算法我觉得还有个不好的一点是忘记判断val的存在性了。如果有什么疑问,可以在评论区告诉我哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398827.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

扫二维码登录

扫二维码登录转载于:https://www.cnblogs.com/cnstalker/p/8325343.html

转载 - 整数划分问题

出处&#xff1a; http://www.cnblogs.com/wanghetao/archive/2013/11/25/3442192.html 整数划分 &#xff0d;&#xff0d;&#xff0d; 一个老生长谈的问题: 描述整数划分是一个经典的问题。请写一个程序,完成以下要求。 输入每组输入是两个整数n和k。(1 < n < 50, 1 &…

27岁转行学什么计算机技术,27岁转行学IT有前途吗?

27岁转行学IT有前途吗?常常可以在网上看到这些转业者的困惑。其实&#xff0c;到了27岁还想转业&#xff0c;无外乎就是之前的工作确实没有什么发展前途。而IT行业作为朝阳产业&#xff0c;发展前景好&#xff0c;一年以上的工作经验可以轻松找到上万薪资的岗位。最重要的是IT…

王道操作系统考研笔记——1.1.1 操作系统的概念、功能和目标

如果这篇博客对您有用的话&#xff0c;可以给我点个赞吗&#xff0c;这对我很重要&#xff0c;谢谢&#xff01;❤️ 文章目录1.1.1 操作系统的概念、功能和目标1.1.1.1 操作系统的概念1.1.1.2 作为系统资源的管理者1.1.1.3 作为用户和计算机硬件之间的接口1.1.1.4 作为最接近硬…

《从零开始学Swift》学习笔记(Day 8)——小小常量、变量大作用

原创文章&#xff0c;欢迎转载。转载请注明&#xff1a;关东升的博客计算机语言学习中都有常量和变量&#xff0c;他们几乎是我编写代码的灵魂了&#xff0c;离开他们我真的是“活不了”常量是标识符的前面加上关键字let。常量其值在使用过程中不会发生变化的量&#xff0c;下面…

番外篇01:angularJS最佳实战

1. 项目组织方式 ng-strict-di&#xff1a;严格依赖注入模式。 在angularJS中&#xff0c;如果要使用模块中的内容&#xff0c;只要提供相关模块的名称即可&#xff0c;不需要自己查找、创建、初始化等等&#xff0c;就可以直接得到需要注入的模块进行使用&#xff0c;这种方式…

石油勘探是属于计算机应用中的,计算机在石油勘探开发中的应用论文

1油田中计算机应用的现状在我国的能源发展中&#xff0c;石油直接关系着能源安全战略&#xff0c;尤其是我国处在经济的快速发展阶段&#xff0c;很多领域对石油资源的需求很大&#xff0c;在世界范围上来说&#xff0c;我国已经处于世界产油五大国之一和石油消费国第二大国。石…

java -jar Incompatible argument to function

原因分析&#xff1a;jar包版本问题 解决方法&#xff1a;到工程中查看代码引用的jar包版本是多少&#xff0c;然后升级jar包&#xff0c;就可以了&#xff01; 转载于:https://www.cnblogs.com/nizuimeiabc1/p/4254173.html

王道操作系统考研笔记——1.1.2 操作系统的特征

如果这篇博客对您有用的话&#xff0c;可以给我点个赞吗&#xff0c;这对我很重要&#xff0c;谢谢&#xff01;❤️ 1.1.2 操作系统的特征 文章目录1.1.2 操作系统的特征1.1.2.1 并发1.1.2.2 共享1.1.2.3 并发和共享的关系1.1.2.4 虚拟1.1.2.5 异步1.1.2.6 小结我们接下来讲的…

mvc中html对象的方法吗,在MVC中使用jQuery模板进行HTML编码的Json对象

所以我有能力在我的网站上发表评论。用户进入场命中“后”和我阿贾克斯评论回到其在该行动的结果在MVC中使用jQuery模板进行HTML编码的Json对象public ActionResult PostComment(Comment NewComment){var repository GetRepository();var player GetPlayer();//we have this …

InputStream中通过mark和reset方法重复利用缓存

通过缓存InputStream可重复利用一个InputStream&#xff0c;但是要缓存一整个InputStream内存压力可能是比较大的。如果第一次读取InputStream是用来判断文件流类型&#xff0c;文件编码等用的&#xff0c;往往不需要所有的InputStream的数据&#xff0c;或许只需要前n个字节&a…

linux新起之秀-linux文件属性

2019独角兽企业重金招聘Python工程师标准>>> 从做到右&#xff1a;1为inode 的节点号&#xff1b;2为文件类型及权限&#xff1b;3为文件或目录的硬链接数&#xff1b;4为属主及所归属的组(属主就想象似地主&#xff0c;属组就像奴才的部分)&#xff1b;5为文件或者…

王道操作系统考研笔记——1.1.3 操作系统的发展及分类

如果这篇博客对您有用的话&#xff0c;可以给我点个赞吗&#xff0c;这对我很重要&#xff0c;谢谢&#xff01;❤️ 文章目录1.1.3 操作系统的发展及分类1.1.3.1 手工操作阶段1.1.3.2 单道批处理系统1.1.3.3 多道批处理系统1.1.3.4 分时操作系统1.1.3.5 实时操作系统1.1.3.6 其…

在手机测试html,借助 IIS 管理器 -- 用手机测试HTML页面

win 2008R2服务器 IIS配置&#xff1a;IIS需要创建网站、配置网站、设置应用程序池回收时间。Hadoop的作业调度器主要有三种:FIFO ,Capacity Scheduler 和Fair Scheduler 2.7.2版本默认是Capacity Schedulerclass RelatedManager"关联管理器"是在一对多或者多对多的关…

通过C学Python(3)列表的常用方法

查看一个对象的id&#xff1a;id(待查对象)检查一个数据的数据类型&#xff1a;type(数据或变量)查询一个序列对象的元素个数&#xff1a;len(序列对象)查看一个类有哪些方法可用&#xff1a;dir(数据或变量或类)查看一个类或函数的使用说明&#xff1a;help(待查数据) L.appen…

iOS开发之如何将字典转为模型

2019独角兽企业重金招聘Python工程师标准>>> 刚刚学习了如何读取plist&#xff0c;将plist中的字典对象转成数组对象。字典和模型都可以存储数据&#xff0c;既然都可以存储对象&#xff0c;那么为什么要把plist中的字典转成模型呢&#xff1f; 字典 &#xff1a;通…

王道操作系统考研笔记——1.1.4 操作系统的运行机制和体系结构

如果这篇博客对您有用的话&#xff0c;可以给我点个赞吗&#xff0c;这对我很重要&#xff0c;谢谢&#xff01;❤️ 文章目录1.1.4 操作系统的运行机制和体系结构1.1.4.1 两种指令、两种处理器状态、两种程序1.1.4.2 操作系统的内核1.1.4.3 操作系统的体系结构1.1.4.4 小结1.1…

计算机动画的主要应用领域,简述计算机的主要特点和主要应用领域

1."简述计算机的主要特点和主要应用领域特点:运算速度快计算精度高具有记忆能力具有逻辑判断能力在程序控制下自动工作" 2."应用领域科学计算信息处理和管理计算机辅助系统过程控制人工智能" 3."计算机硬件系统由哪几部分组成输入设备输出设备存储器运…

How to remove replication in SyteLine V2

以前曾经写了一篇《How to remove replication in Syteline》http://www.cnblogs.com/insus/archive/2011/12/20/2294831.html 过于简单。 由于SyteLine采用共享License的授技术&#xff0c;如果你从一个正式的数据库复制一个备份&#xff0c;恢复至另外一个站点上&#xff0c…