【LeetCode】203,移除链表元素。 难度等级:简单。链表入门题目,值得深入研究。

news2024/12/27 11:33:47

文章目录

    • 一、题目
    • 二、解答:迭代法,引入一个新的头结点
    • 三、难点解释

【LeetCode】203,移除链表元素。 难度等级:简单。

本题是链表入门题目,值得深入研究。

一、题目

在这里插入图片描述

二、解答:迭代法,引入一个新的头结点

# 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: Optional[ListNode], val: int) -> Optional[ListNode]:
    	# 由于链表的头节点 head 有可能需要被删除,而删除头结点比较麻烦(因为需要判断链表是否为空)
    	# 所以创建一个extraList指向head,使得head不是头结点且新的链表不是空链表;删除非空链表的结点是很容易的
        extraList=ListNode(-1,head)
        temp=extraList
        while temp.next!=None:
            if temp.next.val==val:
                temp.next=temp.next.next
            else:
                temp=temp.next
        return extraList.next

三、难点解释

这里有个难点,就是temp和extraList的关系。

(1)temp 只有在被初始化时和extraList相同,进入 while 循环后二者就不相同了,且没有任何关系。

(2)extraList 一直指向 以head为头结点的链表,extraList指向不变,但 以head为头结点的链表 被temp改变了;这就是 extraList 链表会什么会改变的原因。

(3)temp 如何改变 extraList :

以 head = [1,2,6,3,4,5,6], val = 6 为例

1,初始化:extraList = [-1,2,6,3,4,5,6] , temp = [-1,2,6,3,4,5,6] , head =[1,2,6,3,4,5,6]
2,while(-1.next != None):temp = [2,6,3,4,5,6] , head =[1,2,6,3,4,5,6],extraList = [-1,2,6,3,4,5,6]
3,while(2.next != None):temp = [3,4,5,6] , head =[1,2,6,4,5,6],extraList = [-1,2,3,4,5,6]
在这一步时,temp 表示 [存储2的结点],通过 temp.next=temp.next.next 将 [存储2的结点] 的 next指针跳过 6 ,指向 [存储3的结点] 。因此 [存储2的结点] 被改变了,所以 head 和 extraList 也被改变了。
4,以此类推,temp其实是改变了下一个结点为6的结点的next指针,并没有直接影响extraList ;但遍历 extraList 链表时会经过这些已经被改变的结点,所以 return extraList.next 就实现了删除结点。

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

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

相关文章

Kali-linux使用SET实施攻击

前面介绍了社会工程学工具包(SET)的简单使用。为了能帮助用户更容易的理解社会工程学的强大功能。本节将介绍使用社会工程学工具包实施各种攻击。 7.4.1 针对性钓鱼攻击向量 针对性钓鱼攻击向量通过构造特殊文件格式的漏洞进行渗透攻击,如利…

python实现神经网络之---构建神经元模型1(python3.7)

本文主要要以周志华的机器学习书为蓝本编写 第5章神经网络 5.1python 实现神经元模型 神经网络中最基本的成分是神经元 (neuro且)模型,如下图所示: 1943 年, [McCulloch and Pitts, 1943] 将上述情形抽象为国 5.1所示的简单模型&#xff0c…

全球分布式云大会:AntDB超融合流式实时数仓,打造分布式数据库新纪元

日前,全球分布式云大会北京站在北京金茂万丽酒店举办,亚信科技AntDB数据库受邀参会,会上技术负责人北陌发表以“AntDB超融合流式实时数仓,打造分布式数据库新纪元”为主题的演讲,通过分享AntDB在数据库前沿技术的研发实…

打印菱形(两种思路)

一、输入的行数等于上半部分的金字塔行数 思路: 仔细观察图形,可以发现,此图形中是由空格和*按照不同个数的输出组成的。 上三角:先输出空格,后输出*,每行中空格:从上往下,一行减少一…

国外各大学和学院对于ChatGPT使用立场总结

ChatGPT和生成式AI的快速普及对教育这个专业领域带来了威胁——全国各地的大学和学院都召开了紧急会议,讨论如何应对学生利用AI作弊的风险。 一部分学校和教授担心这项技术会成为学生在论文或其他写作作业和考试中寻求捷径的工具。而这种生成内容的方式往往能够绕开…

Deepstream使用Rabbitmq 和kafka发送消息(天坑)unable to connect to broker library

连接服务器失败,要么是是本地参数没设对, 要么服务器没开! 使用Kafka发送消息好搞,按照 /opt/nvidia/deepstream/deepstream-6.2/sources/libs/kafka_protocol_adaptor/README 一步一步来就行了,前提是要搞kafka 环境搭建开启&am…

特殊区域在OSPF协议中的分析

我们都知道OSPF路由器协议是基于SPF算法计算最优路径,当用于SPF算法的LSDB的越大,那么路由器的计算压力就越大,对于一些性能不佳的OSPF路由器来说,如何尽可能的减小LSDB规模也就成了OSPF设计时要考虑到的问题,为了进一…

DMA-STM32

DMA-STM32 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设和存储器或者存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源 12个独立可配置的通道:DMA1 (7个通道),DMA2 (5个通道) 每个通道都支持软件触发和特定的硬件触发 STM32…

第七章.链接

概述 链接:将多个目标文件或库文件组合在一起,生成可执行文件或共享库 可以执行于编译时、加载时、运行时,使得分离编译成为可能,由链接器自动实现链接器:将各个模块之间的符号引用解析为实际的内存地址,生…

大厂面试官带你Get求职面试核心技巧

本文首发自[慕课网] ,想了解更多IT干货内容,程序员圈内热闻,欢迎关注"慕课网"及“慕课网公众号”! 作者:Brain|慕课网名师 Hello,大家好,我是Brian 老师,在开发领域摸爬滚…

Day01 关系型数据MySQL简介与多平台安装配置

在大数据的课程中,我们需要处理的数据来自不同的渠道,其中有一个很重要的渠道就是关系型数据库中存储的数据。在企业中,会把业务数据存储在关系型数据库中,一般以MySQL居多。另外,我们在后续的课程中需要学习Hive、Spa…

SpringBoot启动过程源码解析

一,构造SpringApplication对象 1、推测web应用类型 如果项目依赖中存在org.springframework.web.reactive.DispatcherHandler,并且不存在org.springframework.web.servlet.DispatcherServlet,那么应用类型为WebApplicationType.REACTIVE如果…

【PaLM2】PaLM2 大语言模型与 Bard 使用体验

欢迎关注【youcans的学习笔记】原创作品,火热更新中 【Google I/O 2023】PaLM2 大语言模型与 Bard 使用体验 1. PaLM2 大型语言模型1.1 谷歌发布 PaLM21.2 PaLM2 的功能与性能 2. 基于 PaLM2 的谷歌 AI 产品2.1 智能助手 Duet AI2.2 Gmail:帮我写邮件2.3…

【Spring框架四】——Spring AOP 注解实现和xml方式实现

系列文章目录 【Spring框架一】——Spring框架简介 【Spring框架二】——什么是Spring IOC、 什么是Spring 依赖注入 【Spring框架三】——Spirng IOC和DI的实现 Spring AOP 注解实现和xml方式实现 系列文章目录前言一、什么是Spring AOP(Aspect-Oriented Progra…

OpenAI 宣布推出适用于 iPhone 和 iPad 的 ChatGPT 官方应用程序。

🚀 OpenAI 宣布推出适用于 iPhone 和 iPad 的 ChatGPT 官方应用程序。 OpenAI 宣布推出适用于 iPhone 和 iPad 的 ChatGPT 官方应用程序。 该应用程序具备即时回答各种问题、量身定制的建议、创意灵感、专业意见和个性化学习等功能和特性,可以帮助提高…

【密码产品篇】服务器密码机密钥体系结构

【密码产品篇】服务器密码机密钥体系结构 标准GM/T 0030-2014中规定服务器密码机必须至少支持三层密码体系结构,包括:“管理密钥、用户密钥/设备密钥/密钥加密密钥、会话密钥”。除"管理密钥"外,其他密钥可被用户使用,…

在图片上添加水印的四个方法

如何在图片上添加水印?在当今开放的互联网环境中,平时对于图片的使用已经变成非常广泛,越来越多的人开始关注图片的版权问题。如今,人们越来越注重防盗意识,这是因为我们在网上发布的图片很容易被别有用心之人盗用&…

Maven仓库

1、仓库 仓库:用于存储资源,主要是各种jar包 关于仓库,我们前面讲到了有三种:本地仓库,私服,中央仓库,其中私服和中央仓库都属于远程仓库 中央仓库:maven团队自身维护的仓库&#…

Java面试知识点(全)- Java并发-多线程JUC一

Java面试知识点(全) 导航: https://nanxiang.blog.csdn.net/article/details/130640392 注:随时更新 JUC框架 五个部分: 主要包含: (注意: 网上找的图,主体上可以看出其分类关系也够了) Lock框架和Tools类(把图中这两个放到一起…

一起Linux操作系统部署的Mysql数据库服务器/目录空间占用异常的分析事例

一台Linux操作系统部署的Mysql数据库服务器平时“/"目录占用很低,但每个小时都会出现一次根目录空间占用高的情况,本文系从OS侧对异常事件进行分析排查的过程。 1、初步分析 主机已进行监控,分析监控图表 可见该数据库服务器日常根目录…