LeetCode 203 - 移除链表元素

news/2024/10/21 1:20:17/

题目描述

给你一个链表的头节点 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.ppmy.cn/news/1540649.html

相关文章

Android 禁止App字体随系统大小而更改

运营反馈,老年用户的手机多设置为大字体,在使用我们app过程中,由于字体被放大,导致布局错乱,部分功能按键遮挡,无法正常使用。   收到问题,着手解决,除了对界面布局进行改写&#…

Javascript与前端路由相关webAPI

与路由相关的浏览器Web API主要涉及前端路由的管理,这在单页应用(SPA)中尤为重要。以下是对这些API的详细解释: 一、前端路由的基本概念 前端路由是指在不重新加载页面的情况下,通过改变URL来更新页面内容的一种技术…

Spring Boot与图书管理:进销存系统的新发展

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…

Git 总结

文章目录 1、基础操作1_提交命令2_创建分支命令3_切换分支4_分支合并5_其他关键命令 2、高级操作1_查看 HEAD 指向2_分离Head3_查看提交记录的hash值4_相对引用5_撤销变更 3、移动提交记录1_整理提交记录2_交互式 rebase 4、经验之谈1_提交技巧12_提交的技巧23_Git Tags4_Git D…

Damn-Vulnerable-Drone:一款针对无人机安全研究与分析的靶机工具

关于Damn-Vulnerable-Drone Damn-Vulnerable-Drone是一款针对无人机安全研究与分析的靶机工具,广大研究人员可以利用该环境工具轻松学习、研究和分析针对无人机安全态势。 Damn Vulnerable Drone 基于流行的 ArduPilot/MAVLink 架构,其中故意留下了各种…

施磊C++ | 进阶学习笔记 | 5.设计模式

五、设计模式 这里贴出常用的23中设计模式。视频课程仅包含部分,剩余部分需要找其他课程或者资料进行自学。 1.设计模式三大类型概述 C设计模式是一套被广泛认可的用于解决常见软件设计问题的最佳实践,它们可以帮助开发者编写更加清晰、可维护和可扩展…

【C语言教程】【嵌入式编程】(一)介绍与前提条件(二)嵌入式编程基础(三)硬件基础知识(四)硬件寄存器操作

C语言教程 嵌入式编程 1. 介绍与前提条件 1.1 课程目标 本课程旨在帮助学员深入理解C语言在嵌入式系统开发中的高级用法。通过这一课程,学员将掌握高级C语言技巧,能够在嵌入式环境下开发高效、稳定的系统。课程不仅紧扣理论,还强调实践&a…

【面试11】嵌入式之模电/数电

一、基尔霍尔定律 1.基本概念 (1)请简述基尔霍夫电流定律(KCL)的内容。 KEY:对任一节点,在任一时刻,经过(流入、流出)该节点的所有电流的代数和为零。强调电流的方向性以…