算法Day04_203.移除链表元素

news2024/11/27 8:37:40

推荐阅读

算法day01_ 27. 移除元素、977.有序数组的平方
算法day02_209.长度最小的子数组
算法day03_ 59.螺旋矩阵II

目录

    • 推荐阅读
    • 203.移除链表元素
      • 题目
      • 思路
      • 解法
        • 暴力解法
        • 虚拟头结点解法

203.移除链表元素

题目

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

提示:

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

image.png

思路

暴力解法
循环判断,与val相等,就移除操作,将节点next指针直接指向下下一个节点。
289216231.jpg
若删除的为头结点,那就将头结点向后移动一位就可以。
312190759.jpg

虚拟头结点解法
给链表添加一个虚拟头结点为新的头结点,如果删除的为头结点,就按照移除元素处理就行,无需其他特殊处理。

314211836.jpg

解法

暴力解法

代码示例:

class Solution {
    public ListNode removeElements(ListNode head, int val) {
        if (head == null) {
            return head;
        }
        while (head != null && head.val == val) {
            head = head.next;
        }
        ListNode currentNode = head;
        while (currentNode != null) {
            while (currentNode.next != null && currentNode.next.val == val) {
                currentNode.next = currentNode.next.next;
            }
            currentNode = currentNode.next;
        }
        return head;
    }
}
  • 时间复杂度: O(n)
  • 空间复杂度: O(1)

虚拟头结点解法

代码示例:

class Solution {
    public ListNode removeElements(ListNode head, int val) {
        if (head==null) {
            return head;
        }

        ListNode preHead=new ListNode(-1,head);
        ListNode preNode=preHead;
        ListNode nextNode=head;

        while (nextNode!=null) {
            if (nextNode.val==val) {
                preNode.next=nextNode.next;
            }else{
                preNode=nextNode;
            }
            nextNode=nextNode.next;
        }
        return preHead.next;
    }
}
  • 时间复杂度 O(n)
  • 空间复杂度 O(1)

在这里插入图片描述

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

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

相关文章

深度学习预测分析API:金融领域的Game Changer

&#x1f680; 引言 在这个AI遍地开花的时代&#xff0c;谁能成为金融领域的真正Game Changer&#xff1f;那必然是是深度学习预测分析API。如大脑般高效运转的系统不仅颠覆了传统操作&#xff0c;更是以无与伦比的速度和精度赋予了金融数据以全新的生命。 &#x1f4bc; 广泛…

flutter小程序开发,Android高级工程师必备知识

AWTK 主要特色&#xff1a; 1、跨平台 AWTK 是跨平台的&#xff0c;这有两个方面的意思&#xff1a; AWTK 本身是跨平台的。目前支持的平台有 ZLG AWorks、Windows、Linux、MacOS、嵌入式 Linux、Android、Web 和嵌入式裸系统&#xff0c;可以轻松的移植到各种 RTOS 上。AWT…

缓存一致性:数据库操作与Redis事务回滚

缓存一致性&#xff1a;数据库操作与Redis事务回滚 今日开发需求是“保证数据库操作与Redis缓存操作的一致&#xff0c;在CRUD出错时&#xff0c;保证回滚”。 问题&#xff1a; 1、数据库开启事务&#xff0c;即可在操作失误时&#xff0c;回滚之前的已经做过的操作&#xff…

厚膜功率电阻基板选择

根据电阻器性能规格和应用的全部细节&#xff0c;专业制造商将选择最合适的厚膜功率电阻器基板技术&#xff0c;以适当的成本提供可靠的解决方案。 正确的电阻基板材料选择可以最大限度地提高散热效果并减小元件尺寸。这必须与材料成本和制造过程中的潜在复杂性进行权衡。 基板…

制作Python游戏全过程(汇总2)

目录 前言: 1.基于pygame库创建游戏模块: 1.1引入模块 1.1.1 这是对代码的解释: 1.1.1.1pygame 是一个用于创建游戏的 Python 库。 1.1.1.2plane_sprites 是一个自定义模块&#xff0c;从day6文件夹(也可以是其他的文件夹)中导入&#xff0c;它可能包含了游戏中使用的所有…

Android 消息恢复 - 如何在 Android 上检索已删除的短信

最新调查显示&#xff0c;手机每天发送和接收的短信数以亿计&#xff0c;尤其是Android智能手机。但与此同时&#xff0c;Android消息丢失也每天都在发生。因此&#xff0c;如何恢复Android手机上已删除的短信对于那些在设备中保存了一些重要信息的人来说似乎非常重要。 在这里…

【组合递归】【StringBuilder】Leetcode 17. 电话号码的字母组合

【组合递归】【StringBuilde】Leetcode 17. 电话号码的字母组合 StringBulider常用方法&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;17. 电…

第六篇:人工智能与机器学习技术VS数据迁移(Data Migration)--- 我为什么要翻译介绍美国人工智能科技巨头IAB公司?

(source: 图片来自麻省理工官网&#xff09; IAB平台&#xff0c;使命和功能 IAB成立于1996年&#xff0c;总部位于纽约市。 作为美国的人工智能科技巨头社会媒体和营销专业平台公司&#xff0c;互动广告局&#xff08;IAB- the Interactive Advertising Bureau&#xff09;…

Unreal Engine5记录 01安装

1.下载Epic Games 启动器 官网下载地址 传送门https://www.unrealengine.com/zh-CN 点击下载启动程序&#xff0c;完成之后选择指定的路径安装即可。 2.登录或注册一个账户 多种登录方式&#xff0c;选择一种登录即可。 3.找到虚幻引擎下载列表 选择想要的版本进行下载&…

LeetCode——二叉树(Java)

二叉树 简介[简单] 144. 二叉树的前序遍历、94. 二叉树的中序遍历、145. 二叉树的后序遍历二叉树层序遍历[中等] 102. 二叉树的层序遍历[中等] 107. 二叉树的层序遍历 II[中等] 199. 二叉树的右视图[简单] 637. 二叉树的层平均值[中等] 429. N 叉树的层序遍历[中等] 515. 在每个…

微信小程序开发系列(十七)·事件传参·mark-自定义数据

目录 步骤一&#xff1a;按钮的创建 步骤二&#xff1a;按钮属性配置 步骤三&#xff1a;添加点击事件 步骤四&#xff1a;参数传递 步骤五&#xff1a;打印数据 步骤六&#xff1a;获取数据 步骤七&#xff1a;父进程验证 总结&#xff1a;data-*自定义数据和mark-自定…

Doris实战——金融壹账通指标中台的应用实践

目录 前言 一、业务痛点 二、早期架构挑战 三、架构升级 四、一体化指标数据平台 4.1 构建指标体系 4.2 构建指标平台功能 五、Doris指标应用实践 六、未来规划 原文大佬的这篇指标中台的应用实践有借鉴意义&#xff0c;这里摘抄下来用作学习和知识沉淀。 前言 在搭建…

python+django_vue旅游酒店预订出行订票系统pycharm项目lw

a.由于对管理信息方面的内容了解尚浅且没有足够的经验&#xff0c;因而很难对数据庞大的线上旅行信息管理系统建立完善的数据库。 b.线上旅行信息管理系统拥有很大的信息量&#xff0c;其中包括数据库的前期开发和后期更新&#xff0c;因此对数据库的安全性&#xff0c;一致性和…

CVE-2020-8835:eBPF verifier 整数截断导致的越界读写

文章目录 前言漏洞分析do_check 函数 漏洞利用漏洞触发越界读实现地址泄漏越界写实现任意读越界写实现任意写 exp 即效果演示参考 前言 影响版本&#xff1a;v5.4.7 ~ v5.5.0 以及更新的版本&#xff0c;如 5.6 编译选项&#xff1a;CONFIG_BPF_SYSCALL&#xff0c;config 所有…

Vue基础入门(4)- Vuex的使用

Vue基础入门&#xff08;4&#xff09;- Vuex的使用 Vuex 主要内容&#xff1a;Store以及其中的state、mutations、actions、getters、modules属性 介绍&#xff1a;Vuex 是一个 Vue 的 状态管理工具&#xff0c;状态就是数据。 大白话&#xff1a;Vuex 是一个插件&#xff…

网站维护页面404源码

网站维护页面404源码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;重定向这个界面 下载地址 https://www.qqmu.com/2407.html

【排序算法】深入理解归并排序算法:从原理到实现

目录 1. 引言 2. 归并排序算法原理 3. 归并排序的时间复杂度分析 4. 归并排序的应用场景 5. 归并排序的优缺点分析 5.1 优点&#xff1a; 5.2 缺点&#xff1a; 6. Java、JavaScript 和 Python 实现归并排序算法 6.1 Java 实现&#xff1a; 6.2 JavaScript 实现&…

MySQL 元数据锁及问题排查(Metadata Locks MDL)

"元数据"是用来描述数据对象定义的&#xff0c;而元数据锁&#xff08;Metadata Lock MDL&#xff09;即是加在这些定义上。通常我们认为非锁定一致性读&#xff08;简单select&#xff09;是不加锁的&#xff0c;这个是基于表内数据层面&#xff0c;其依然会对表的元…

如何解决代理ip服务器连接问题

在当今的数字化时代&#xff0c;互联网连接已成为生活和工作中不可或缺的一部分。然而&#xff0c;在尝试访问互联网资源时&#xff0c;用户有时会遇到“代理服务器可能有问题&#xff0c;或地址不正确(你尚未连接)”的错误提示。这种情况通常表明计算机的网络设置存在问题&…

OWASP Top 10 网络安全10大漏洞——A01:2021-访问控制中断

10大Web应用程序安全风险 2021年top10中有三个新类别、四个类别的命名和范围变化&#xff0c;以及一些合并。 A01&#xff1a;2021-访问控制中断 从第五位上升到top1&#xff0c;94%的应用程序都经过了某种形式的访问控制破坏测试&#xff0c;平均发生率为 3.81%且在贡献的…