【链表-简单】203. 移除链表元素(三种方法)

LeetCode203移除链表元素 算法特点及适用场景特点采用递归的方式实现链表节点的移除操作,代码结构简洁明了,逻辑清晰,非常符合链表这种数据结构通过指针依次访问节点的特点,易于理解和实现。它能够准确地移除链表中所有值为指定值的节点,保证了链表结构在处理后的正确性。时间复杂度为 $O (n)`,在处理链表节点移除问题上具有较好的效率表现,只要链表的节点数量在可接受范围内,都能快速地完成移除操作。适用场景。 阅读详情

【题目】
给你一个链表的头节点 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 <= k <= 50
【代码】
【Python】
在这里插入图片描述

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def removeElements(self, head: ListNode, val: int) -> ListNode:
        jilu=[]
        t=head
        while t:
            if t.val != val:
                jilu.append(t.val)
            t=t.next
        pre,t=head,head
        if not jilu:
            return None
        for x in jilu:
            t.val=x
            pre=t
            t=t.next
        if pre.next:
            pre.next=None
        return head

【方法2】
在这里插入图片描述

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def removeElements(self, head: ListNode, val: int) -> ListNode:
        if not head:
            return head
        cur,rs,rear=head,None,None
        while cur:
            if cur.val!=val:
                if not rs:
                    rs=cur
                    rear=rs
                else:
                    rear.next=cur
                    rear=cur
            cur=cur.next
        if rear:
            rear.next=None
        return rs

【方法3】
在这里插入图片描述

class Solution:
    def removeElements(self, head: ListNode, val: int) -> ListNode:
        while head and head.val==val:
            head=head.next
        if not head:
            return head
        pre,cur=head,head.next
        while cur:
            if cur.val==val:
                pre.next=cur.next
            else:
                pre=cur
            cur=cur.next
        return head
LeetCode 203:移除链表元素 python LeetCode 203:移除链表元素 python 第一次用python写链表,我在怀疑自己到底有没有学过python, 题目已经定义了节点,所以不用自己写,但是没给定义链表啊,呜呜呜所以调试用掉了我很大很大的力气 一、题目 题目传送门—— https://leetcode-cn.com/problems/remove-linked-list-elements/ 二、解析 最简单的单链表删除元素,是链表模块的入门级别了,链表删除主要考虑三种情况 1.空链表,也就是 head == None,这种情况直接 阅读详情

相关推荐

保姆级教程:在RK3588平台上为IMX415 Sensor配置HDR2曝光(附完整代码与避坑点)

本文提供RK3588平台上为IMX415 Sensor配置HDR2曝光的详细教程,涵盖基础概念、限制条件、实战配置步骤及常见问题解决方案。通过完整代码示例和关键参数解析,帮助开发者高效实现HDR2曝光模式,提升图像质量并避开常见陷阱。

weixin_28685287的博客 284

删除单链表中的重复元素(处理相邻情况)

删除单链表中的重复元素(处理相邻情况)

superiony的博客 508

【SAP-MDG】工作流任务配置实战:从基础配置到代理分配详解

本文详细解析了SAP MDG工作流任务配置的全流程,从基础配置到代理分配的关键操作。通过实战案例和最佳实践,帮助用户掌握Configure Workflow Tasks的核心技巧,包括环境检查、代理分配、SWDD事务码使用及常见问题排查,提升主数据管理效率。

weixin_33738555的博客 250

移除链表中指定元素-三种实现方法

这种方法就是分三种情况进行讨论:头删、尾删、中间删,比较容易想到,但实现起来也相对麻烦。我们可以从两个角度出发看这个题目:一个是需要删除的元素,另一个是需要保留的元素。链表不比顺序表,链表新建所开辟的额外空间是常数阶,不会造成空间复杂度的提升。大致代码与方法二相同,只不过是带哨兵位的头结点可以简化尾插。因此我们可以新建一个链表,将非删除元素尾插进来。,请你删除链表中所有满足。的节点,并返回 新的头节点。给你一个链表的头节点。

Fahaxiki_lyt的博客 4515

GD32 TIMER0 PWM输出死活没波形?别忘了这个关键配置(附完整代码)

本文详细解析了GD32 TIMER0 PWM输出无波形的常见问题,特别强调了高级定时器特有的主输出使能配置。通过完整的代码示例和调试技巧,帮助开发者快速解决PWM输出问题,适用于无刷电机控制等嵌入式应用场景。

weixin_30906185的博客 397

电动汽车BMS核心技术:AS8510高精度传感器解析

电池管理系统(BMS)是电动汽车的核心组件,其精度直接影响电池安全与续航表现。通过Σ-Δ ADC和斩波稳定等技术,现代BMS传感器可实现±0.5%的电流测量精度,满足汽车级AEC-Q100和ISO 26262标准。AS8510作为行业标杆芯片,采用双通道16位ADC架构,在-40°C至+150°C范围内保持稳定性能,特别适合新能源汽车的严苛环境。这类高精度传感器技术不仅解决了传统BMS的温漂难题,还为智能电池诊断、无线BMS等创新应用奠定了基础,是推动电动汽车技术进步的关键要素。

weixin_30781775的博客 533

203. 移除链表元素—四种方法(Leetcode)

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

weixin_64618739的博客 1485

Mendix 开发实践指南|Mendix平台概览

低代码开发是一种将编码从文本形式转变为视觉形式的应用开发方法。它提供了一个模型驱动的、拖放式的界面,而不是传统的编码环境,使得各种技能水平的开发者——包括专业开发人员、新手、主题专家、业务利益相关者和决策者——都能使用低代码工具来构建驱动价值的企业业务应用。低代码的核心在于提高开发的可访问性和效率,让更多人能够参与到应用开发中来​​。Mendix适用于多种应用场景,包括企业级应用、移动应用、物联网(IoT)应用和微服务架构等。

多年搬砖的经验分享... 4413

删除链表中相邻重复元素

删除链表中相邻元素,如 1, 2, 3,3,4, 4 操作之后得到 1, 2, 3, 4 代码: struct ListNode { int nData; ListNode* pNext; }; void Unique(ListNode* pHead) { // 链表无节点或者只有1个节点 if (NULL == m_pHead || NULL == m_pHead->

xupeng1644的博客 777

ADC电路项目1——10bit SAR ADC 设计,smic18工艺,有工艺库,有效位数ENOB为9.8

包括详细仿真文档,原理介绍,完整电路图,仿真参数已设好,可直接使用,在自己的电脑上就可以运行仿真。本设计采用 smic18mmrf CMOS 工艺,使用栅压自举电路的采样开关,Vcm-based 开关。电容开关控制电路,10 位 DFF,最后用 10 位理想 DAC 模块将数字码转换为 10 进制量进。时序上级板采样的 DAC 电容阵列,两级动态比较器,比较器异步时钟,SAR 动态逻辑,DAC。10bit SAR ADC 设计,smic18工艺,有工艺库,有效位数ENOB为9.8。

qq_48407979的博客 815

OSCP-1-3-natraj(本地文件包含、日志中毒、apache2配置漏洞、nmap提权)

像往常一样,我们将使用“Netdiscover”工具识别主机的 IP。所以,让我们首先用 nmap 列出所有 TCP 端口。我们从访问web服务(80端口)开始,在那里我们找到了几张关于Natraj的图片和信息,我们将查看源代码和robots.txt,似乎没有什么有用的。(或至少,目前)。因此,让我们继续进行。在 Dirb 及其默认字典的帮助下,我们找到了一个名为“”的目录。我们进入并列出一个名为“”的文件:如果我们执行它,我们会看到它什么也不做。我们可能需要添加其他内容。

墨痕诉清风的博客 532

链表——删除元素或插入元素(头插法及尾插法)

是一种在存储单元上非连续,非顺序的存储结构,由一系列结点组成,结点可以在运行的过程中,每个结点包括两部分:存储数据的;存储下一节点地址的。对的理解:将某个变量(例如 int a)赋值给指针,实际上就是将这个变量的地址赋值给指针,或者反过来说,指针中存储了这个变量的内存地址,指向了这个变量,通过指针就能找到这个变量。

明里灰的博客 4578

ABAP 平台注册 OAuth 2.0 Client 的完整实践指南(覆盖 Authorization Code、SAML Bearer 与 PKCE)

本文详述了在ABAP平台上注册入站OAuth 2.0 Client的关键技术和操作要点。文章面向SAP技术人员,系统梳理了前置条件(TLS/SSL、技术用户、授权对象)、配置路径(SOAUTH2事务)、授权类型差异(授权码、SAML Bearer、PKCE)等重要内容。特别强调入站与出站配置的区别,并提供了保密客户端和公有客户端的配置指引。文中所有事务码和参数均参考SAP官方文档,包含多个实用案例和权限配置建议,为ABAP系统作为OAuth 2.0授权服务器的实施提供全面指导。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 298

day3-代码随想录||链表||203.移除链表元素 707.设计链表 206.反转链表

找第一个不为val的节点的目的是: 由于单链表的特性(单向指向),删除节点需要先找到待删除节点的前一个节点,这样比较好操作。关键点在于这题给的链表,他的head节点本身就是一个有实际含义的节点,而不是一个空节点。一道设计类的题,看似不难,其实存在很多细节,容易写错,由于卡尔大神写的是单链表版本的,我写了一个双向链表的版本。这道题相对简单,就是创建一个pre节点用于记录前一个节点的位置,一个cur节点不断向后移动即可。对非头节点的处理:这里就比较简单,如果相等就删除cur所指的节点,不过不等cur向后走。

2301_76865569的博客 386

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【LeetCode_203】移除链表元素

C++实现LeetCode第203题:移除链表元素

有梦想的电信狗 903

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

leetcode 203.移除链表元素 、 707.设计链表 、206.反转链表

对于链表的增删,一般是使用双指针来实现,即利用两个指针,pre,cur,pre是cur指针的前缀结点,两个指针同时遍历链表,当遍历到等于val时,此时cur指针指向的就是值等于val的节点,也是题目要求删除的节点。则可以利用pre指针(因为pre指针的cur指针的前缀节点)指向cur指向的下一个节点,即删除了当前cur指向的节点。给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点。假设链表中的所有节点下标从 0 开始。

huiNB的博客 1954

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

leetcode 链表 203. 移除链表元素

else部分的作用是当当前节点cur的下一个节点的值不等于要删除的值val时,将cur指针指向下一个节点,继续遍历链表。如果不进行这个判断,当cur已经是链表的最后一个节点时,尝试访问cur->next->val会导致程序出错,因为此时cur->next为NULL,不能再访问其成员变量val。,此时 head 指向了原来节点的下一个节点,而 tmp 仍然指向原来的节点;移除头结点和移除其他节点的操作是不一样的,因为链表的其他节点都是通过前一个节点来移除当前节点,而头结点没有前一个节点。

挥剑决浮云的博客 1076

力扣203:移除链表元素

这句话我初学的时候看了好几遍,最终明白是让cur的下一个节点变成下一个的下一个节点,即把cur后面的第二个节点赋值给cur的下一个节点,这样cur原来的下一个节点就没有指向他的节点,可以看做是删除的操作。由于5不等于val,所以第三个节点指向的节点为5节点本身,,此时对第三个节点进行操作,第三个节点的值等于val所以返回当前节点的下一个节点就是5,完成了删除6的操作。由于val=6,返回的是当前节点的next节点,即5完了返回的是空节点,完成了删除最后一个节点的操作。此时对倒数第二个节点进行操作。

2302_80043968的博客 1578

203. 移除链表元素

之所以//尾部遍历,是因为如果删除当前的值,那么就又需要当前的前面去连接当前的后面。递归遍历链表,然后从后往前找,判断ListNode是不是需要删除的val。而普通链表只能链接后面,不能链接前面。针对上面的问题,引入了。

Wzideng@qq.com 1125

力扣203. 移除链表元素

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

2301_79385646的博客 888

leetcode 203.移除链表元素

leetcode 203.移除链表元素 题目描述 删除链表中等于给定值 val 的所有节点。 示例: 输入: 1->2->6->3->4->5->6, val = 6 输出: 1->2->3->4->5 解题思路 1.删除链表中节点的方法 链表中可能包含多个val值,首先如果链表头等于val值得时候,直接是头结点向后移动一位,删除当前的...

EngineerHe的博客 1634

移除链表元素

给你一个链表的头节点 head 和一个整数 val ,请你。,将不等于val的节点。首先我们能想到的就是。

fighting小泽的博客 687

203.移除链表元素

摘要: 题目要求删除链表中所有等于给定值的节点。解决方法有两种:1)直接操作原链表,需单独处理头节点;2)使用虚拟头节点,统一删除逻辑。示例代码展示了两种实现方式:无头结点版本需先处理头部连续目标值,再遍历剩余节点;有虚拟头结点版本则通过dummy节点简化操作,统一处理所有节点。两种方法时间复杂度均为O(n)。使用C++时建议手动释放内存,而Java/Python无需考虑。关键点在于正确处理节点指针的更新和边界条件。

m0_68880377的博客 572

【简单】203.移除链表元素

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

qq_51467258的博客 842

算法力扣刷题记录六【203移除链表元素】

删除链表节点

danaaaa的博客 1369

Leet Code刷题笔记(一)--203.移除链表元素

Leet Code刷题第一期,Topic:链表的入门题,Content:删除指定节点

2301_79419488的博客 1033
上一篇: 【Python/notebook】notebook安装、配置、更改工作目录及使用
下一篇: 【gitlab】修改linux上gitlab端口
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值