『 LeetCode题解 』203. 移除链表元素

news2024/11/27 6:31:10

题目链接 : 『 LeetCode题解 』203. 移除链表元素
https://leetcode.cn/problems/remove-linked-list-elements/


目录

    • 🌟题目要求
    • 🌟解题思路(动图解析)
      • 🧐方案一
      • 😁方案二
    • 🌟代码示列


🌟题目要求

在这里插入图片描述


🌟解题思路(动图解析)

🧐方案一

方案1:主要思路遇到val就删除,分为头删和中间删除两种情况。

当val在链表中间时,遇到val就删除链表中和val相同的节点,并链接val后面的节点。

当val在链表开头时,或者连续的时候,我们将链表其实的head(头)向后移动,直到找到不是val的节点,作为开始的头。

在这里插入图片描述在这里插入图片描述


😁方案二

方案2:遍历原链表,把不是val的节点,尾插到新链表

使用尾插的方法,将不是val的值插入到新链表,为了避免增加时间复杂度,使用tail为尾节点
但需要注意的是当末尾不是val值时需要将tail->next置为NULL

在这里插入图片描述


🌟代码示列

方案一 代码:

struct ListNode* removeElements(struct ListNode* head, int val)
{
        struct ListNode*prev=NULL;
        struct ListNode*cur=head;
        while(cur)
        {
            if(cur->val==val)
            {
                if(cur==head)
                {
                    head=cur->next;
                    free(cur);
                    cur=head;
                }
                else
                {
                    prev->next=cur->next;
                    free(cur);
                    cur=prev->next;
                }
                
            }
            else
            {
                prev=cur;
                cur=cur->next;
            }
        }
    return head;
}

方案二 代码:

struct ListNode* removeElements(struct ListNode* head, int val)
{
	struct ListNode*cur=head;
    struct ListNode*newhead=NULL;
    struct ListNode*tail=NULL;
    while(cur)
    {
        if(cur->val==val)
        {
            struct ListNode* del=cur;        
            cur=cur->next;  
            free(del);
        }
        else
        {
            if(tail == NULL)
            {
                newhead = tail = cur;
            }
            else
            {
                tail->next=cur;
                tail=tail->next;
            }
            cur=cur->next;
            
        }
    }    
        if(tail)
            tail->next=NULL;     
       
     return newhead;
}

在这里插入图片描述

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

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

相关文章

海康机器人工业相机SDK MVS安装教程

文章目录 一. 海康机器人介绍二. 工业相机客户端安装教程 一. 海康机器人介绍 海康机器人是面向全球的机器视觉和移动机器人产品及解决方案提供商,业务聚焦于工业物联网、智慧物流和智能制造,构建开放合作生态,为工业和物流领域用户提供服务…

低代码平台如何改变软件开发?低代码平台是否能形成新生态?

低代码平台如何改变软件开发?低代码平台是什么?低代码平台又有什么样的独特价值?在如今的市场环境下,低代码平台又能展现出怎样的生机? 01 什么是低代码开发平台? 低代码开发平台是一种更偏向于赋能技术人…

监管机构新出台的会计法规将对阿里巴巴和其他中概股产生重大影响

来源:猛兽财经 作者:猛兽财经 监管机构出台了新的会计法规 猛兽财经获悉,为规范企业数据资源相关会计处理,强化相关会计信息披露,财政部于2023年8月21日制定并发布了《企业数据资源相关会计处理暂行规定》&#xff0c…

使用Python连接MySQL数据库并查找表信息

使用Python连接MySQL数据库并查找表信息 1.导入MySQLdb包 import MySQLdb如果你的PyCharm中没有MySQLdb,就从Setting-》Project Interpreter查找并下载 2.在MySQL中新建一个连接,取名为python ,再新建一个测试表,取名为examples…

FAQ包含哪些内容?

FAQ页面也叫常见问题解答页面,能够帮助回答客户有关你的产品和服务的常见问题,这不仅仅只是一个问题列表,通过解答页面,可以节约销售时间和服务成本,以及可能推动新用户购买。常见问题解答页面可以在整个采购过程中为客…

顺序表链表OJ题(2)->【数据结构】

W...Y的主页 😊 代码仓库分享 💕 前言: 单链表的结构常常不完美,没有双向链表那么”优秀“,所以繁衍出很多OJ练习题。今天我们继续来look look数据结构习题。 下面就是OJ时间!!! …

UEditorPlus v3.4.0 全新公式编辑体验,Logo全新发布

UEditor是由百度开发的所见即所得的开源富文本编辑器,基于MIT开源协议,该富文本编辑器帮助不少网站开发者解决富文本编辑器的难点。 UEditorPlus 是有 ModStart 团队基于 UEditor 二次开发的富文本编辑器,主要做了样式的定制,更符…

基于Java+SpringBoot+Vue前后端分离图书管理系统设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

缓存一致性问题

在开发中我们为了提高查询效率,经常使用缓存(典型的缓存技术redis),但是在缓存的使用中我们经常遇到缓存和一致性问题(缓存的数据和数据库的数据不一致) 常见的解决方式 1.双写模式:更新数据库时候同时更新缓存 2.失效模式&#xff…

开源家政小程序源码仿58到家分享 带安装教程完整版

今天继续分享一个家政公司小程序源码系统,完全开源的,可以二次开发,支持多商家,直接在线预约,功能很是强大。 家政小程序源码系统是一款基于微信小程序平台的家政服务管理系统,旨在帮助家政服务公司更好地管…

C语言题目--2

CFLAGS“-Wall” 是将警告更多的显示出来 make ex1 会寻找ex1.c,然后去编辑它 需要编译Makefile,在执行make时,会在目录下寻找Makefile,根据定义去执行make hello是命名规则,下面是具体的命令 注意:用Tab键…

【FreeRTOS】【应用篇】消息队列【上篇】——队列基本概念、创建和删除

文章目录 前言一、什么是消息队列,有什么用1. 概念2. 作用3. 特点 二、消息队列的深入原理1. 消息队列的存储结构2. 出入队列的相关操作① 入队操作:② 发送紧急消息:③ 读取队列操作: 3. 关于队列的阻塞机制① 读操作的阻塞机制&…

checkstyle检查Java编程样式:空格检查

一个空行不能有空格 例如,第22行是空行,有4个空格,checkstyle检查报错: 将4个空格删掉,checkstyle检查通过: 行末尾不能有空格 将行末尾的空格删掉即可消除这个违反项: 用WhitespaceAfte…

驱动作业,按键中断阻塞LED灯

驱动程序 #include "head.h" #include <linux/init.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/uaccess.h> #include <linux/io.h> #include <linux/device.h> #include <linux/export.h> #in…

抖音转化率是什么意思,怎么计算,如何提升效果?

抖音转化率是指在抖音平台上进行某种特定行为的用户数量与总用户数量之间的比率。作为短视频搜索领域的最大平台&#xff0c;抖音转化率一直是企业用户的攻克难题。 茹莱神兽认为&#xff0c;想要提升抖音的转化率&#xff0c;就需要研究它的转化路径。常见的转化行为包括点击…

Java Predicate用法

Java Predicate用法 无需写sql.只要拼接条件就行 Java Predicate用法

未来智造:珠三角引领人工智能产业集群

原创 | 文 BFT机器人 产业集群是指产业或产业群体在地理位置上集聚的现象&#xff0c;产业集群的研究对拉动区域经济发展&#xff0c;提高区域产业竞争力具有重要意义。 从我国人工智能产业集群形成及区域布局来看&#xff0c;我国人工智能产业发展主要集聚在京津冀、长三角、…

澳大利亚以及美国纽扣电池新标准讲解!

一、什么是澳大利亚纽扣电池认证标准&#xff1f; 答&#xff1a;近期很多商家的产品无论是成品还是单独的纽扣电池&#xff0c;只要成品中带有纽扣的电池的功能都是需要办理澳洲的认证的&#xff0c;最近抽查的比较严格&#xff0c;因为电池测试这方面是为降低与使用纽扣电池相…

【优选算法】—— 二分查找

序言&#xff1a; 本期&#xff0c;我们将要介绍的是有关 二分查找算法 并通过题目帮组大家更好的理解&#xff01; 目录 &#xff08;一&#xff09;基本介绍 1、基本思想 2、解题流程 3、复杂度以及注意事项 &#xff08;二&#xff09;题目讲解 1、在排序数组中查找…

微信好友误删别担心,这几个方法助你轻松加回!

有些人一生气&#xff0c;一怒之下就把好友给删了。事后又想加回来&#xff0c;那要怎么办呢&#xff1f; 删除的好友怎么才能加回来&#xff1f;还是有一些办法的&#xff0c;小伙伴们可以试试&#xff01; 对方的微信号肯定是记不住的&#xff0c;要加回来肯定是一脸糊涂了。…