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

题目链接 : 『 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.hqwc.cn/news/86919.html

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

相关文章

第三方ipad笔哪个牌子好用?开学季ipad触控笔推荐

现在,对于ipad用户来说,苹果Pencil系列绝对是他们最好的选择。但价格太贵了,普通用户根本买不起。所以,在实际应用中,选择一种性能好,价格便宜的电容笔就显得尤为重要。身为一名“苹果粉”,又是…

C 连接MySQL8

Linux 安装MySQL 8 请参考文章&#xff1a;Docker 安装MySQL 8 详解 Visual Studio 2022 编写C 连接MySQL 8 C源码 #include <stdio.h> #include <mysql.h> int main(void) {MYSQL mysql; //数据库句柄MYSQL_RES* res; //查询结果集MYSQL_ROW row; //记录结…

使用WSL修改docker文件存储位置

按照以下说明将其重新定位到其他驱动器/目录&#xff0c;并保留所有现有的Docker数据。 首先&#xff0c;右键单击Docker Desktop图标关闭Docker桌面&#xff0c;然后选择退出Docker桌面&#xff0c;然后&#xff0c;打开命令提示符&#xff1a; wsl --list -v您应该能够看到&a…

c++冒泡排序的动画演示+程序实现

冒泡排序&#xff08;Bubble Sort&#xff09;是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列&#xff0c;依次比较两个相邻的元素&#xff0c;如果顺序&#xff08;如从大到小、首字母从Z到A&#xff09;错误就把他们交换过来。走访元素的工作是重复…

如何基于自己训练的Yolov5权重,结合DeepSort实现目标跟踪

网上有很多相关不错的操作demo&#xff0c;但自己在训练过程仍然遇到不少疑惑。因此&#xff0c;我这总结一下操作过程中所解决的问题。 1、deepsort的训练集是否必须基于逐帧视频&#xff1f; 我经过尝试&#xff0c;发现非连续性的图像仍可以作为训练集。一个实例&#xff0…

three.js(四):react + three.js

绘制多个立方体 1.搭建reactts 项目 npx create-react-app basics-demo --template typescriptreactts 的用法可参考此链接&#xff1a; https://react-typescript-cheatsheet.netlify.app/docs/basic/setup 2.安装three依赖 npm install three types/three --save3.安装路…

dml dql 约束 数据库设计

dml 1.添加数据 *语法 &#xff1a; *insert into 表名&#xff08;列名1&#xff0c;列名2&#xff0c;……..列名n&#xff09;values(值1&#xff0c;值2&#xff0c;…值n) *注意&#xff1a; 1.列名和值要一一对应 2.如果表名后&#xff0c;不写列名&#xff0c;就要给…

【微服务】03-HttpClientFactory与gRpc

文章目录 1.HttpClientFactory &#xff1a;管理外向请求的最佳实践1.1 核心能力1.2 核心对象1.3 HttpClient创建模式 2.gRPC&#xff1a;内部服务间通讯利器2.1 什么是gRPC2.2 特点gRPC特点2.3.NET生态对gRPC的支持情况2.4 服务端核心包2.5 客户端核心包2.5 .proto文件2.6 gRP…

HDFS读写数据流程和NameNode工作机制

HDFS文件系统写数据 1.步骤 文件上传步骤&#xff1a; 向NameNode请求上传文件文件路径(验证请求身份&#xff0c;写权限)响应可以上传文件请求上传第一个Block(0-128M), 请返回DataNode返回dn1,dn2,dn3节点&#xff0c;表示采用这三个节点存储数据 NameNode节点选择存储节…

servletAPI超详__解老公不在家, 一个人偷看Servlet

目录 tomcat的定位 Servlet 详解 HttpServlet 核心方法 Get请求 关于乱码的问题 HttpServletRequest 核心方法 代码案例1: 打印请求信息 代码案例2: 获取GET请求中的参数 代码案例3:获取POST请求中的参数 代码案例4:获取POST请求中的参数(2) 引入JSON库解析String字符…

HCIP-OpenStack组件之neutron

neutron&#xff08;ovs、ovn&#xff09; OVS OVS(Open vSwitch)是虚拟交换机&#xff0c;遵循SDN(Software Defined Network&#xff0c;软件定义网络)架构来管理的。 OVS介绍参考&#xff1a;https://mp.weixin.qq.com/s?__bizMzAwMDQyOTcwOA&mid2247485088&idx1…