[Leetcode 203][Easy]移除链表元素

目录

一、题目描述

二、整体思路

三、代码


 

一、题目描述

原题链接

二、整体思路

         首先分成两种情况。第一种情况要先判断头元素是否要删除。第二种要在第一种基础上进行(删除到头元素不是要删除的元素),然后遍历链表,遍历到不是要删除的元素再链接。

        最开始的想法:遍历链表的时候不能直接用head,否则会改变head,要新设一个ListNode prev=head。用prev去链接不符合删除元素的结点。同时新设ListNode temp=head.next用于遍历。

        关于链表,要想清楚的地方是:prev指向的ListNode类,改变其next属性。和head通过迭代访问next属性所访问到的类的next属性也会一起改变,因为两者访问到的是同一个类。

        改进后的思路:不另外设置temp结点。只利用prev结点就足够了。当prev的下一个结点不是要被删除的结点时才更新prev,否则删除prev的下一个结点。

三、代码

/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode removeElements(ListNode head, int val) {while(head!=null && head.val==val){//首元素是要被删除的情况head=head.next;}if(head==null) return head;//链表为空与所有元素都为要被删除的元素的情况ListNode temp=head.next;ListNode prev=head;while(true){if(temp!=null && temp.val!=val){//不是被删除的元素,要保留prev.next=temp;prev=prev.next;}else if(temp==null){prev.next=null;break;}temp=temp.next;//temp是遍历的}return head;}
}
/*** Definition for singly-linked list.* public class ListNode {*     int val;*     ListNode next;*     ListNode() {}*     ListNode(int val) { this.val = val; }*     ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode removeElements(ListNode head, int val) {while(head!=null && head.val==val){head=head.next;}if(head==null) return head;ListNode prev=head;//优化,不另外设置temp的做法while(prev.next!=null){if(prev.next!=null && prev.next.val==val){//prev结点下一个结点是要删除的节点ListNode delnode=prev.next;prev.next=delnode.next;delnode.next=null;}else{prev=prev.next;//prev结点下一个结点不是要删除的节点是,把prev更新该结点}}return head;}
}

 

 

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

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

相关文章

大语言模型-GPT2-Generative Pre-Training2

一、背景信息: GPT2是2019年由OpenAI 提出的预训练语言模型。 GPT2提出语言模型式无监督的多任务学习 。旨在通过无监督学习也能达到和finetune一样的效果,并且拥有更强的泛化能能力。 即提出利用语言模型做下游任务时,不需要下游任务的任何…

美食地图开发

调用地图接口展示数据库录入的不同类别地址信息,提供导航服务,手机端电脑端自适应。 语音介绍使用微软的tts接口可选不同语音性别生成

在linux中,如何搭建nacos2.4.0的版本,修改nacos密码

由于最近服务器经常被攻击,看了一下发现是nacos版本过低,导致被抓了肉鸡,导致服务器的网端被跑满,选择重新搭建nacos,进入服务器后,首先确定服务器是否安装java,先执行java -version&#xff0c…

Hadoop、Hive、HBase、数据集成、Scala阶段测试

姓名: 总分:Hadoop、Hive、HBase、数据集成、Scala阶段测试 一、选择题(共20道,每道0.5分) 1、下面哪个程序负责HDFS数据存储( C ) A. NameNode B. Jobtracher C. DataNode D. Sec…

vue3引入openlayers

安装ol包 OpenLayers作为 ol npm包提供,它提供了官方支持的API的所有模块。 官方地址:ol npm install ol模块和子模块约定 具有CamelCase名称的OpenLayers模块提供类作为默认导出,并且可能包含其他常量或函数作为命名导出: i…

vim gcc

vim 使用 vs filename 分屏 ctrl ww 切窗口 shift zz 快速提出vim vim配置 vim启动时自动读取当前用户的家目录的.vimrc文件 vim配置只影响本用户 其他用户观看同一文件不受影响 gcc指令 & c文件编译过程 动态库 静态库 & 链接方式 有相应库才能进行…

全面解析 SnowNLP:中文文本处理、情感分析

1 前言 SnowNLP 是一个专门用于处理中文文本的 Python库。功能包括: 分词情感分析关键词提取文本分类拼音转换繁体转简体词相似度计算等 snownlp0.12.3测试环境:Python3.10.9 2 分词 中文分词(Character-Based Generative Model&#xf…

目标检测进阶:1.COCO数据集与VOC数据集

目录 一、COCO数据集 1.COCO数据集下载 2.COCO数据集相关介绍 Captions.json文件 instances.json文件 Person_keypoints.json文件 3.提取instances中的边界框信息 二、VOC数据集 1.VOC数据集下载 VOC2007训练集验证集百度云资源(提取码6zg6)htt…

【docker】Ubuntu20安装docker并拉取mongodb

文章目录 docker安装拉取mongodb其他操作配置mongodb远程连接 docker安装 // 安装 apt install docker.io // 换源 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF{"registry-mirrors": ["https://ox288s4f.mirror.aliyuncs.com&q…

mac下010editor的配置文件路径

1.打开访达&#xff0c;点击前往&#xff0c;输入~/.config 2.打开这个文件夹 把里面的 010 Editor.ini 文件删除即可&#xff0c;重新安装010 Editor即可

微前端--single-spa

微前端 使用微前端的挑战&#xff1a; 子应用切换&#xff0c;应用相互隔离&#xff0c;互补干扰&#xff0c;子应用之前的通信&#xff0c;多个子应用并存&#xff0c;用户状态的存储&#xff0c;免登。 常用技术方案 路由分发式微前端 通过http服务的反向代理 http {serv…

无人机搭载无人机反制设备可行性分析

一、引言 随着无人机技术的飞速发展&#xff0c;无人机在各个领域的应用越来越广泛。然而&#xff0c;无人机的不当使用也可能带来安全隐患和隐私问题。因此&#xff0c;无人机反制设备应运而生&#xff0c;用于对非法或危险无人机进行干扰和控制。本文将对无人机搭载无人机反…

简单的git分支mergepush权限设定

简单的git分支merge&push权限设定 1. 需求 公司的分支很多&#xff0c;主要的有master分支&#xff0c;很多的业务需求分支&#xff0c;开发测试分支(uat,uat2,sit,sit2)&#xff0c;这些分支当前是谁都可以进行提交&#xff0c;但是如果在分支上直接修改&#xff0c;或者…

Sentinel隔离、降级、授权规则详解

文章目录 Feign整合Sentinel线程隔离熔断降级授权规则自定义异常结果 上一期教程讲解了 Sentinel 的限流规则&#xff1a; Sentinel限流规则&#xff0c;这一期主要讲述 Sentinel 的 隔离、降级和授权规则 虽然限流可以尽量避免因高并发而引起的服务故障&#xff0c;但服务还…

R语言统计分析——数据管理4

参考资料&#xff1a;R语言实战【第2版】 1、数学函数 abs(x)&#xff1a;绝对值 sqrt(x)&#xff1a;平方根 ceiling(x)&#xff1a;不小于x的最小整数 floor(x)&#xff1a;不大于x的最大整数 trunc(x)&#xff1a;向0的方向截取x中的整数部分 round(x,digitsn)&#…

参加可观测性Observability Foundation认证培训,您有哪些收益?

一、可观测性认证培训的内容 作为SRE&#xff08;站点可靠性工程&#xff09;课程体系的最新发展&#xff0c;可观测性&#xff08;Observability&#xff09;认证课程介绍了一系列结合应用程序生命周期和复杂体系架构中推进可观测性的核心概念和实践。为关注全栈可观测性&…

涉及VPN、金融、健康服务等类型应用上架政策突变

大家好&#xff0c;我是牢鹅&#xff01;今天为大家分享Google Play 2024年7月17日下发的政策更新&#xff0c;此次政策更新距上次&#xff08;4月5日&#xff09;政策大更新仅过去三个月。前段时间牢鹅跟谷歌的人有聊过&#xff0c;今年他们的目标很明确&#xff0c;提高开发者…

Django执行ORM时打印SQL语句

settings中添加LOGGING相关日志配置 LOGGING {version: 1,disable_existing_loggers: False,handlers: {console:{level:DEBUG,class:logging.StreamHandler,},},loggers: {django.db.backends: {handlers: [console],propagate: True,level:DEBUG,},}}批量查询DEMO&#xf…

Docker————数据卷容器,容器互联,镜像创建

1、Docker的数据管理 管理Docker容器中的数据&#xff0c;主要有两种方式&#xff1a;数据卷&#xff08;Data Volumes&#xff09;和数据卷容器&#xff08;DataVolumes Containers&#xff09;. docker run [-i -t] [--name 容器名] 镜像名&#xff1a;标签 [容器启动命令]…

线下陪玩平台搭建系统小程序线下陪玩到家软件系统搭建开发

在当今的陪玩行业中&#xff0c;一种被称为“豺狼虎豹”的现象正在悄然兴起&#xff0c;那就是陪玩师接私单的行为。因为它不仅影响了平台的正常运营&#xff0c;还可能导致高质量客户的流失。然而&#xff0c;这个这种行为对于平台来说无疑是一种巨大的挑战&#xff0c;问题并…