力扣-203. 移除链表元素

news/2024/10/15 14:20:27

1.题目

题目地址(203. 移除链表元素 - 力扣(LeetCode))

https://leetcode.cn/problems/remove-linked-list-elements/

题目描述

给你一个链表的头节点 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
输出:[]

 

提示:

  • 列表中的节点数目在范围 [0, 104]
  • 1 <= Node.val <= 50
  • 0 <= val <= 50

2. 题解

2.1 迭代

思路

设置一个虚拟头结点 dummyhead, 接上head,防止head被删除,导致的heap-use-after-free 访问堆中已释放的地址异常

代码

  • 语言支持:C++

C++ Code:


/*** 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, head);ListNode* cur = head, * prev = dummyHead;while (cur != nullptr) {if (cur->val == val) {prev->next = cur->next;delete cur;cur = prev->next;} else {prev = prev->next;cur = cur->next;}}return dummyHead->next;}
};

复杂度分析

令 n 为数组长度。

  • 时间复杂度:\(O(n)\)
  • 空间复杂度:\(O(1)\)

2.2 递归

思路

设置返回条件和递归条件即可

代码

/*** 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) {if(head == nullptr) return head;head->next = removeElements(head->next, val);return head->val == val ? head->next : head;}
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

网络接收全流程

网卡简介 网卡是一块通信硬件。属于数据链路层。用户可以通过电缆或无线相互连接。每一个网卡都有一个独一无二的MAC地址(48位),它被写在卡上的一块ROM中。IEEE负责为网卡销售商分配唯一的MAC地址。 可以在终端运行sudo lshw -C network来查看网卡型号 可以在/lib/modules/$(u…

《痞子衡嵌入式半月刊》 第 99 期

痞子衡嵌入式半月刊: 第 99 期这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。 上期回顾 :《…

Codeforces Round 942 Div.2 题解

ds 这么聪明的。蹭个热度,挽救一下 cnblogs 蒸蒸日上的阅读量。Q: 你是手速狗吗? A: 我觉得我是。2A 因为选的 \(w\) 一定可以让它合法,一次操作可以看作 \(a\) 数组向右平移一位。枚举操作次数后暴力判断即可。 #include <bits/stdc++.h>void work() {int n;std::cin…

linux下调试串口设备

USB转串口常用CH34x芯片,该芯片有linux下的驱动。 在默认情况下,大部分linux发行版都包含了CH34x的驱动,唯一缺点就是版本比较久。 可以先插上开发板, 一般是挂载到/dev/ttyCH341USB0文件下,如果该文件不存在,有两种可能,一种是驱动版本太久,可以下载官方的驱动文件,然…

BSP视频教程第30期:UDS ISO14229统一诊断服务CAN总线专题,常用诊断执行流程精讲,干货分享,图文并茂(2024-04-30)

视频教程汇总帖:https://www.armbbs.cn/forum.php?mod=viewthread&tid=110519 【前言】 1、继前面分享了CANopen和J1939的专题后,这次继续为大家分享UDS专题视频第1期。 2、统一诊断服务(Unified Diagnostic Services,简称UDS)是车用电子的通信协议,是电子控制器EC…

Reverse Card (Hard Version)

事情是这样的,我验了这一场 CF。显然我玩原神玩多了有一个很奇怪的、不能过的算法,哦,当然,在我本机可以过。为了展现自己的智慧糖,我写一下。 出题人是先发给我了一个限制都是 \(n\) 的,因此只有这个。\(n,m\) 改改就是了。 要求 \(1\le a\le n,1\le b\le n\) 满足\(a+b…

IDEA在运行maven打war的时候报错:Cannot access defaults field of Properties

问题描述:解决方案 在pom.xml文件中引入:<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>3.3.1</version></plugin></plugins>…

重链剖分题目选讲

染色 给定一棵 \(n\) 个节点的无根树,共有 \(m\) 个操作,操作分为两种:将节点 \(a\) 到节点 \(b\) 的路径上的所有点(包括 \(a\) 和 \(b\))都染成颜色 \(c\)。 询问节点 \(a\) 到节点 \(b\) 的路径上的颜色段数量。颜色段的定义是极长的连续相同颜色被认为是一段。例如 1…