链表题(1)

news2024/12/24 1:05:23

链表题

今天给大家带来道链表题的练习

链表的中间节点

先给大家奉上链接:

https://leetcode.cn/problems/middle-of-the-linked-list/description/

题目描述;
给你单链表的头结点 head ,请你找出并返回链表的中间结点。
如果有两个中间结点,则返回第二个中间结点。

示例 1:
在这里插入图片描述

输入:head = [1,2,3,4,5]
输出:[3,4,5]
解释:链表只有一个中间结点,值为 3 。

示例2:
在这里插入图片描述
输入:head = [1,2,3,4,5,6]
输出:[4,5,6]
解释:该链表有两个中间结点,值分别为 3 和 4 ,返回第二个结点。

提示:

链表的结点数范围是 [1, 100]
1 <= Node.val <= 100。

思路:
我们可以用双指针的方法来遍历,一个快速遍历,一个记录中间节点,快指针遍历的速度是慢指针的两倍即可。这种情况下,我们来看一下,如果是示例1的情况,一共有奇数个节点,那么当慢指针指向最后一个节点也就是指向5,如果是示例2的情况,当慢指针指向第二个中间节点时,此时快指针,指向的是空指针,也就是6之后的那个空指针,所以此时遍历循环的停止条件也就是当快指针指向空指针和尾指针时停止。

struct ListNode* middleNode(struct ListNode* head) {
    struct ListNode* slow=head,*fast=head;//快慢指针同时指向头指针
    while(fast!=NULL&&fast->next!=NULL)//循环停止条件
    {
        slow=slow->next;//慢指针一个一个遍历
        fast=fast->next->next;//快指针一次遍历两个
    }
    return slow;//返回中间节点
}

思路已经确定过了,那么具体代码奉上,若有不太理解看注释即可。

在这里插入图片描述

移除链表元素

先把链接给大家奉上:

https://leetcode.cn/problems/remove-linked-list-elements/description/

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

示例1:
在这里插入图片描述
输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]

示例2:
输入:head = [], val = 1
输出:[]

示例3:
输入:head = [7,7,7,7], val = 7
输出:[]

提示:

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

思路:
首先,我们遍历链表,遇到需要移除的节点,释放掉,指向下一个节点即可,最后返回新的头节点。

代码:

struct ListNode* removeElements(struct ListNode* head, int val) {
    struct ListNode* cur=head,*prev=NULL;//双指针移动
    while(cur)//遍历循环
    {
        if(cur->val==val)//需要移除的时候
        {
            struct ListNode* next=cur->next;//定义新节点接受需要移除节点的下一个节点
            free(cur);//释放掉该节点
            if(prev)//如果head也就是头节点需要移除
                prev->next=next;//prev指针指向下一个节点
            else
                head=next;//next成为新的头节点
            cur=next;//临时节点遍历
        }
        else//无需移除临时节点遍历
        {
            prev=cur;
            cur=cur->next;
        }
    }
    return head;//返回头节点
}


在这里,大家可能会忽视掉如果头节点需要删除,那么返回的头节点就不能是原来的头节点了,而时新的头节点。
在这里插入图片描述

(最后,题目描述截图来自力扣网截取,若侵权,联系必删除)。

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

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

相关文章

day4作业

设计一个Per类&#xff0c;类中包含私有成员:姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员:成绩、Per类对象p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数、拷贝赋值函数。 #include <iostream>using name…

一句话说明:企业架构框架鼻祖Zachman

问&#xff1a;禁止废话&#xff0c;一句话表达&#xff0c;Zachman是什么&#xff1f;包含哪些内容&#xff1f; 韩老师正经回答&#xff1a;Zachman是企业架构框架鼻祖&#xff0c;包含6行6列的矩阵式架构内容。6列是5W1H&#xff08;What、How、Where、Who、When、Why&…

技术分享 | app自动化测试(Android)--App 控件定位

客户端的页面通过 XML 来实现 UI 的布局&#xff0c;页面的 UI 布局作为一个树形结构&#xff0c;而树叶被定义为节点。这里的节点也就对应了要定位的元素&#xff0c;节点的上级节点&#xff0c;定义了元素的布局结构。在 XML 布局中可以使用 XPath 进行节点的定位。 App的布…

物联网AI MicroPython学习之语法 uhashlib哈希算法

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; uhashlib 介绍 实现二进制数据散列算法&#xff0c;支持sha256&#xff0c;sha1&#xff0c;MD5。 接口介绍 sha256 - 创建一个SHA256哈希对象 参数原型&#xff1a;hash_obj uhashlib.sha256([bytes]) …

CMD命令行中如何切换路径。

问题描述&#xff1a; windows命令行中我记得切换命令是cd E:命令就行了呀。但是现在好像不行了。 问题解决&#xff1a;现在windows命令行中切换命令需要在cd E:之间增加一个/D。注意是/D&#xff0c;不是\D。 具体命令如下&#xff1a;CD /D E: 结果如下如所示&#xff1a…

企业级低代码平台需具备的关键能力解析

低代码是数字化转型浪潮下的产物&#xff0c;国内外已经生产出了很多成熟的产品。目的是让企业以更低的成本、更快的周期、更易操作的方式完成企业数字化布局&#xff0c;以实现内部的高效工作。 一、什么是“企业级”低代码&#xff1f; 首先&#xff0c;我们先回答什么是“…

Mysql数据库 10.SQL语言 储存过程 上

存储过程方法 存储过程介绍 SQL指令执行过程 1.编写SQL指令 2.通过网络传送SQL指令&#xff0c;编写SQL指令后通过数据库连接将指令传送到数据库 3.数据库接收SQL指令 4.当数据库接收到指令后&#xff0c;通过SQL引擎编译并执行SQL指令 5.返回到DBMS显示查询结果 存储过…

基于浣熊算法的无人机航迹规划-附代码

基于浣熊算法的无人机航迹规划 文章目录 基于浣熊算法的无人机航迹规划1.浣熊搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用浣熊算法来优化无人机航迹规划。 1.浣熊搜索算法 …

关于卷积神经网络的多通道

多通道输入 当输入的数据包含多个通道时&#xff0c;我们需要构造一个与输入通道数相同通道数的卷积核&#xff0c;从而能够和输入数据做卷积运算。 假设输入的形状为n∗n&#xff0c;通道数为ci​&#xff0c;卷积核的形状为f∗f&#xff0c;此时&#xff0c;每一个输入通道都…

剑指offer全集系列Java版本(2)

目录 反转链表 替换空格 二叉树 链表的中间结点 附录 StringBuffer类中常用的方法 反转链表 反转链表_牛客题霸_牛客网 (nowcoder.com)https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca?tpId265&tqId39226&rp1&ru/exam/oj/ta&qru…

时序预测 | MATLAB实现基于LSSVM-Adaboost最小二乘支持向量机结合AdaBoost时间序列预测

时序预测 | MATLAB实现基于LSSVM-Adaboost最小二乘支持向量机结合AdaBoost时间序列预测 目录 时序预测 | MATLAB实现基于LSSVM-Adaboost最小二乘支持向量机结合AdaBoost时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于LSSVM-Adaboos…

Spring Cloud学习(一)【SpringCloud介绍/服务远程调用】

文章目录 单体架构分布式架构微服务微服务技术对比Spring Cloud 介绍服务拆分及远程调用 单体架构 单体架构&#xff1a; 将业务的所有功能集中在一个项目中开发&#xff0c;打成一个包部署。 优点&#xff1a; 架构简单部署成本低 缺点&#xff1a; 耦合度高 分布式架构 …

小程序day04

目标 自定义组件 创建组件 引用组件 局部引用 全局引用 组件的函数定义到metods节点中&#xff0c;梦回vue2. 样式 数据&#xff0c;方法&#xff0c;属性 下划线开头的称为自定义方法&#xff0c;非下划线开头的都是事件处理函数。 神特么&#xff0c;this.datathis.pro…

【计算系统】分布式训练:DDP单机多卡并行实战

分布式训练&#xff1a;DDP单机多卡并行 1. 分布式训练总览1.1 并行方式1.2 PyTorch中数据并行方法1.3 训练原理1. DataParallel(DP)训练原理2. DistributedDataParallel(DDP)多卡训练的原理 2. PyTorch分布式代码实战2.1 不使用DDP和混合精度加速的代码2.2 使用DDP对代码改造后…

2021年06月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python等级考试&#xff08;1~6级&#xff09;全部真题・点这里 一、单选题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 第1题 对自然数1至n求和&#xff0c;如果将递推式f(n)f(n-1)n(n>1)转化成递归函数&#xff0c;则递归出口是&#xff1f; …

自动出价下机制设计系列 (二) : 面向私有约束的激励兼容机制设计

本文作者&#xff1a;真柏、妙临 欢迎关注&#xff1a;阿里妈妈技术公众号>> 导读&#xff1a;这篇是阿里妈妈在自动出价下机制设计系列的第二篇工作&#xff08;&#x1f517; 第一篇&#xff1a;面向异质目标函数广告主的拍卖机制设计&#xff09;。在自动出价中&…

猫罐头哪家好?5款良心性价比的猫罐头推荐!

在我们日常的宠物喂养中&#xff0c;猫罐头已经成为了许多猫奴们的必备利器。但面对五花八门的猫罐头品牌&#xff0c;如何为你的猫咪挑选一个既合适又满意的猫罐头呢&#xff1f;作为一家宠物店的老江湖&#xff0c;我已经在宠物行业摸爬滚打了七年&#xff0c;店里的猫儿队伍…

数据库的基础增删查改操作(二)

TOC 一.条件查询的练习题 – 查询英语不及格的同学及英语成绩 ( < 60 ) – 查询语文成绩好于英语成绩的同学 查询语文成绩高于60,英语成绩低于60 查询li开头的学生姓名 1.and与or 查询语文成绩大于80分&#xff0c;且英语成绩大于80分的同学 SELECT * FROM exam_result W…

Anaconda如何创建一个环境

activate env_name 激活环境&#xff0c;env_name&#xff1a;环境名 deactivate env_name 激活环境 conda list …

java八股文(mysql篇)

什么是关系型数据库&#xff1f; 其是建立在关系模型基础上的一种数据库&#xff0c;这种关系分为&#xff1a;一对一&#xff0c;一对多&#xff0c;多对多。 我们的数据存放在表中&#xff0c;在表中会有一至多个字段&#xff0c;一行就是一条数据。 mysql有哪些字段呢&…