代码随想录算法训练营第3天| 203. 移除链表元素、206. 反转链表

news2025/1/15 6:23:11

代码随想录算法训练营第3天| 203. 移除链表元素、206. 反转链表

移除链表元素

力扣题目链接

删除链表中等于给定值 val 的所有节点。

这里以链表 1 4 2 4 来举例,移除元素4。

203_链表删除元素1

那么因为单链表的特殊性,只能指向下一个节点,刚刚删除的是链表的中第二个,和第四个节点,那么如果删除的是头结点又该怎么办呢?

这里就涉及如下链表操作的两种方式:

  • 直接使用原来的链表来进行删除操作。
  • 设置一个虚拟头结点在进行删除操作。

来看第一种操作:直接使用原来的链表来进行移除。

/**
 * @description: 移除链表元素
 * @author: 刘宇浩
 * @date: 2023/1/6 0:28
 */
public class RemoveLinkedListElement {
    public ListNode removeElements(ListNode head, int val) {
        while (head != null && head.val == val) {
            head = head.next;
        }
        ListNode current = head;
        while (current != null) {
            while (current.next != null && current.next.val == val) {
                current.next = current.next.next;
            }
            current = current.next;
        }
        return head;
    }
}

反转链表

力扣题目链接(opens new window)

反转一个单链表。

示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL

如果再定义一个新的链表,实现链表元素的反转,其实这是对内存空间的浪费。

其实只需要改变链表的next指针的指向,直接将链表反转 ,而不用重新定义一个新的链表,如图所示:

206_反转链表

/**
 * @description: 反转链表
 * @author: 刘宇浩
 * @date: 2023/1/6 21:23
 */
public class ReverseLinkedList {
    public ListNode reverseList(ListNode head) {
        ListNode pre = null;
        ListNode temp = null;
        ListNode curr = head;
        while (curr != null) {
            temp = curr.next;
            curr.next = pre;
            pre = curr;
            curr = temp;
        }
        return pre;
    }
}
e = curr;
            curr = temp;
        }
        return pre;
    }
}

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

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

相关文章

RS485通信----基本原理+电路图

一、RS485 通信----简介 RS485 是美国电子工业协会(Electronic Industries Association,EIA)于1983年发布的串行通信接口标准,经通讯工业协会(TIA)修订后命名为 TIA/EIA-485-A。 RS485 是一种工业控制环境…

获取Java集合中泛型的Class对象

直接获取时获取不到的,类型被虚拟机擦除了 泛型的正常工作是依赖编译器在编译源码的时候,先进行类型检查,然后进行类型擦除并且在类型参数出现的地方插入强制转换的相关指令实现的。编译器在编译时擦除了所有类型相关的信息,所以…

【36张图,一次性补全网络基础知识】

OSI和TCP/IP是很基础但又非常重要的知识,很多知识点都是以它们为基础去串联的,作为底层,掌握得越透彻,理解上层时会越顺畅。今天这篇网络基础科普,就是根据OSI层级去逐一展开的。 01 计算机网络基础 01 计算机网络的…

让阿里再次伟大--钉钉如何长成独角兽的?

文章目录引子开端发展历程:从2014到2022钉钉和阿里云的全面融合钉钉体系架构技术挑战ToB与ToC的差异安全要求高稳定性要求高业务多样性钉钉的创新存储创新单元化平台开放这些年,钉钉做了哪些优化?钉钉的技术栈钉钉的竞争对手们飞书微信华为welink未来参…

ArcGIS基础实验操作100例--实验58二维点、线转三维

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 高级编辑篇--实验58 二维点、线转三维 目录 一、实验背景 二、实验数据 三、实验步骤 (1&…

二、kubernetes集群环境搭建

文章目录1.前置知识点2.kubeadm 部署方式介绍3.安装要求4.最终目标5.集群环境6 初始化环境6.1 检查操作系统版本6.2 主机名解析6.3 时间同步6.4 禁用selinux6.5 禁用swap分区6.6 修改linux的内核参数6.7 配置ipvs功能6.8 安装docker6.9 安装Kubernetes组件6.10 准备集群镜像6.1…

多线程案例

日升时奋斗,日落时自省 目录 1、单例模式 1.1、饿汉模式 1.2、懒汉模式 1.3、饿汉和懒汉的线程安全 2、生产者消费者模型 2.1、理论解释 2.2、优势 2.3、阻塞队列代码解析 2.4、生产者消费者代码解析 2.5、简单实现阻塞队列代码解析 3、定时器 3.1、定时…

Java中String、StringBuffer 和 StringBuilder 的区别

1. String 字符串常量,字符串长度不可变。Java 中 String 是 immutable(不可变)的。 2. StringBuffer 1.如果要频繁对字符串内容进行修改,出于效率考虑最好使用 StringBuffer,如果想转成 String 类型,可以调…

论文笔记Neural Ordinary Differential Equations

论文笔记Neural Ordinary Differential Equations概述参数的优化连续标准化流(Continuous Normalizing Flows)生成式的隐轨迹时序模型(A generative latent function time-series model)这篇文章有多个版本,在最初的版…

嵌入式系统IO体系简述

前言: CPU的主要职责是负责运算,而计算机是需要各种外设的,否则无法和人进行交互。早期x86体系的CPU,需要使用前端总线(fsb)和北桥芯片相连,北桥再和南桥相连。南北桥是一种架构的划分&#xff…

数据结构与算法——算法分析(3)

算法的时间复杂度计算 算法基本操作执行的次数还会随着问题输入的数据集不同而不同 最坏时间复杂度:在最坏的情况下,算法的时间复杂度 平均时间复杂度:所有可能输入在等概率的情况下算法的期望运行时间 最好时间复杂度:在最好的…

企业内训方案|数据治理/项目管理/敏捷项目管理/产品管理

企业内训方案|数据治理/项目管理/敏捷项目管理/产品管理 》》数据治理 数据管理基础 数据处理伦理 数据治理 数据架构 数据建模和设计 数据安全 数据集成和互操作 文件和内容管理 参考数据和主数据 数据仓库和商务智能 元数据管理 数据质量 大数据和数据科学 数据管理成熟度评…

网络协议HTTP:了解Web及网络基础

文章整理自图书图解Http第一章:使用Http协议访问Web第二章:Http的诞生第三章:网络基础TCP/IP协议一:应用层二:传输层三:网络层四:链路层五:TCP/IP通信传输流第四章:IP、T…

http与https的区别我真的知道吗

之前每次看到类似“http与https的区别?”的问题时,都会自己思考一下答案,好像只是浅显地知道https比http安全,但究竟为什么更安全,却又似乎说不出个所以然,或者说很多细节地方自己都是不清楚的。为了搞清楚…

Linux权限shell命令以及运行原理

文章目录一、Linux权限的概念二、Linux权限管理2.1.文件访问者的分类(角色)2.2文件属性2.3文件访问权限的相关设置方法2.4访问者角色的修改2.5目录权限含义2.6默认权限三、粘滞位四、 shell命令以及运行原理一、Linux权限的概念 权限的概念通常是指行事…

ffmpeg录制H265格式的桌面视频

ffmpeg本身不支持H265,如果需要支持,需要事先编译出libx265,读者可以到libx265的官方网站https://www.videolan.org/developers/x265.html上找到下载地址,本人下载的是x265_3.5.tar.gz。 编译libx265时,定位到其目录下…

java基础 网络编程

网络编程概念: 让程序可以和网络上的其他设备中的程序进行数据交互。 网络通信基本模式: CS:Client-Server 自己写客户端和服务器交流 BS:Browser/Server 通过浏览器和服务器交流 实现网络编程关键的三要素…

python中的函数与变量

一、函数python中函数的基本格式则为:def函数名参数名函数体返回,python作为一门面向对象的语言,同样可分为类函数、实例函数。 # 定义一个函数 def add(x, y):"""函数的说明:param x: 参数x的作用:param y: 参数y的作用:return: 函数返…

碱性环境吸钯树脂技术

汞和贵金属的选择性去除回收离子交换树脂 Tulsimer CH-95S 是一款为了从工业废水中去除回收汞和贵金属而开发的螯合树脂。 Tulsimer CH-95S是一款拥有聚乙烯异硫脲官能基的大孔树脂,这种树脂对汞有的选择性。它也选择其他的贵金属,如黄金,铂…

消息收发弹性——生产集群如何解决大促场景消息收发的弹性降本诉求

作者:宸罡 产品介绍—什么是消息收发弹性 大家好,我是来自阿里云云原生消息团队的赖福智,花名宸罡,今天来给大家分享下阿里云 RocketMQ5.0 实例的消息弹性收发功能,并且通过该功能生产集群是如果解决大促场景消息收发…