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

LeetCode 203 - 移除链表元素

题目描述

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

解题思路

创建一个虚拟头节点dummyHead,并将其next指向给定的头节点head,这样可以避免处理头节点的特殊情况。使用指针cur来遍历链表,当cur的下一个节点不为空时,进行如下操作:
  1.如果cur的下一个节点的值等于给定的数值val,则将其下一个节点(即要移除的节点)保存在临时指针tmp中,然后将cur的next指针指向下下个节点,同时删除tmp指向的节点,完成移除操作。
  2.如果cur的下一个节点的值不等于给定的数值val,则将cur指针指向下一个节点,即保持链表的连续性。
  3.最后,将head指向dummyHead的下一个节点,即新的头节点,然后删除dummyHead节点释放内存,最终返回新的头节点。

算法实现

C++实现

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode() : val(0), next(nullptr) {}*     ListNode(int x) : val(x), next(nullptr) {}*     ListNode(int x, ListNode *next) : val(x), next(next) {}* };*/
class Solution {
public:ListNode* removeElements(ListNode* head, int val) {ListNode*dummyHead=new ListNode(0);dummyHead->next=head;ListNode*cur=dummyHead;while(cur->next!=NULL){if(cur->next->val==val){ListNode*tmp=cur->next;cur->next=cur->next->next;delete tmp;}else{cur=cur->next;}}head=dummyHead->next;delete dummyHead;return head;}
};

复杂度分析

  • 时间复杂度:O(n),其中n是链表的长度。需要遍历整个链表一次。
  • 空间复杂度:O(1),只使用了常数级别的额外空间。

总结

=这种方法的时间复杂度和空间复杂度都很低,适用于处理大规模的链表数据。希望本篇博客能给大家提供一些帮助,也欢迎大家多多交流,共同进步!

以上就是对LeetCode203移除链表元素的解题思路、算法实现、复杂度分析和总结,希望对你有所帮助!

http://www.lryc.cn/news/464152.html

相关文章:

  • 【海图界面上一些常见术语UTC、HDG、COG、SOG、LAT、LON的基本解释】
  • HL7协议简介及其在STM32上的解析实现
  • TensorRT推理端到端
  • 获取历史的天气预报数据的网站
  • 【VUE】Vue中常用的修饰符
  • 数据分箱:如何确定分箱的最优数量?
  • 机器学习核心功能:分类、回归、聚类与降维
  • Python爬虫-eBay商品排名数据
  • LabVIEW提高开发效率技巧----图像处理加速
  • AcWing1027
  • 23 Shell Script服务脚本
  • 三周精通FastAPI:3 查询参数
  • 大语言模型学习指南:入门、应用与深入
  • 【Linux-进程间通信】匿名管道+4种情况+5种特征
  • Perl打印9x9乘法口诀
  • Android--第一个android程序
  • MySQL的并行复制原理
  • 2023年五一杯数学建模C题双碳目标下低碳建筑研究求解全过程论文及程序
  • 信息安全工程师(57)网络安全漏洞扫描技术与应用
  • 练习题 - Scrapy爬虫框架 Spider Middleware 爬虫页中间件
  • 探索C++的工具箱:双向链表容器类list(1)
  • 大厂高频算法考点--单调栈
  • Unity使用Git及GitHub进行项目管理
  • 如何将本地 Node.js 服务部署到宝塔面板:完整的部署指南
  • SpringBoot项目启动报错:命令行太长解决
  • 使用Docker启动的Redis容器使用的配置文件路径等问题以及Python使用clickhouse_driver操作clickhouse数据库
  • 硬盘格式化后能恢复数据吗?4款好用的数据恢复软件,格式化后也能安心
  • 【选择C++游戏开发技术】
  • Oracle数据库系统表空间过大,清理SYSTEM、SYSAUX表空间
  • LaTeX参考文献工具和宏包bibmap项目简介