当前位置: 首页 > news >正文

移除链表元素-力扣203题

移除链表元素

  • 题目
  • 思路
  • C++代码

题目

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。

示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]

示例 2: 输入:head = [], val = 1 输出:[]

示例 3: 输入:head = [7,7,7,7], val = 7 输出:[]

思路

首先,删除某个节点,我们需要找到该节点的前驱。

注意这个节点可能是头结点。所以我们使用一个虚拟头结点来处理该题,让它指向head,这样无论要删除的结点是否是头结点,删法均相同,不需要做任何特殊处理。

待删除结点可能并非一个而是有多个存在,所以要用到while循环遍历,注意这里不能使用虚拟头结点直接遍历,否则会丢失头结点的位置。

最后,请不要忘记,c++需要释放内存。

C++代码

class Solution {
public:ListNode* removeElements(ListNode* head, int val) {ListNode* curHead = new ListNode(0);//设置虚拟头结点,方便删除curHead->next = head;//虚拟头结点指向头结点headListNode* cur = curHead;//负责遍历和删除while(cur->next != NULL){if(cur->next->val == val){ListNode* temp = cur->next;//用于临时存储要删除的结点,以便于释放内存cur->next = cur->next->next;delete temp;}else {cur = cur->next;}}head = curHead->next;//头结点指向虚拟头结点的下一个,即删除后的头结点位置delete curHead;//释放头结点内存return head;}
};

相关文章:

  • 分布式之日志系统平台ELK
  • kubernetes node 节点管理
  • 如何解决跨区域文件传输存在的安全管控问题?
  • K8S-使用SVC域名解决ip不固定导致consul服务注册脏数据异常问题
  • OpenAI新模型发布,免费开放GPT-4o!但只开放一点点...
  • qt基于QGraphicsView的屏幕旋转
  • Spring Boot顶层接口实现类注入项目的方法
  • 【复旦邱锡鹏教授《神经网络与深度学习公开课》笔记】线性分类模型损失函数对比
  • 深度学习500问——Chapter12:网络搭建及训练(1)
  • 50.Python-web框架-Django中引入静态的bootstrap样式
  • 基于springSecurity的双token机制(accesToken,refreshToken)以及如何刷新token
  • windows文件及文件夹加密后无法解除加密
  • python tensorflow 各种神经元
  • Java 读取Excel导入数据库,形成树状结构
  • 基于若依的ruoyi-nbcio流程管理系统增加所有任务功能(一)
  • 收藏网友的 源程序下载网
  • [译] React v16.8: 含有Hooks的版本
  • “寒冬”下的金三银四跳槽季来了,帮你客观分析一下局面
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • Android组件 - 收藏集 - 掘金
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • golang 发送GET和POST示例
  • HTTP中的ETag在移动客户端的应用
  • Invalidate和postInvalidate的区别
  • Java 多线程编程之:notify 和 wait 用法
  • JavaScript HTML DOM
  • Js基础知识(四) - js运行原理与机制
  • Linux gpio口使用方法
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • SpiderData 2019年2月16日 DApp数据排行榜
  • vue总结
  • Yeoman_Bower_Grunt
  • 简析gRPC client 连接管理
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 聊聊redis的数据结构的应用
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 前端面试之CSS3新特性
  • 什么软件可以剪辑音乐?
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 微信开源mars源码分析1—上层samples分析
  • 项目管理碎碎念系列之一:干系人管理
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • #define,static,const,三种常量的区别
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • #考研#计算机文化知识1(局域网及网络互联)
  • (12)Linux 常见的三种进程状态
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (PySpark)RDD实验实战——取最大数出现的次数
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (第27天)Oracle 数据泵转换分区表
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (四)汇编语言——简单程序
  • (一)为什么要选择C++
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端