[LeetCode]-876.链表的中间结点-206.反转链表-21.合并两个有序链表-203.移除链表元素
目录
876.链表的中间结点
题目
思路
代码
206.反转链表
题目
思路
代码
21.合并两个有序链表
题目
思路
代码
203.移除链表元素
题目
思路
代码
876.链表的中间结点
876. 链表的中间结点 - 力扣(LeetCode)
https://leetcode.cn/problems/middle-of-the-linked-list/description/
题目
给你单链表的头结点
head,请你找出并返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。
示例:

思路
快慢指针法:在单链表头节点head位置创建两个指针fast和slow,两个指针通过while循环依次向后遍历,slow一次跨越一个节点slow->next,fast一次跨越两个节点fast->next->next,当fast或fast的下一节点fast->next为空时,终止循环,则此时的slow所在节点为中间节点。

代码
struct ListNode* middleNode(struct ListNode* head) {struct ListNode* slow=head,*fast=head;while(fast&&fast->next){slow=slow->next;fast=fast->next->next;}return slow;
}
206.反转链表
206. 反转链表 - 力扣(LeetCode)
https://leetcode.cn/problems/reverse-linked-list/description/
题目
给你单链表的头节点
head,请你反转链表,并返回反转后的链表。
示例:

思路
依次断开原链表的第一个节点,用头插的方式插入新链表,注意注意要保存好cur的下一节点next。

代码
struct ListNode* reverseList(struct ListNode* head){struct ListNode* cur=head;struct ListNode* newhead=NULL;while(cur){//保存下一节点struct ListNode* next=cur->next;//头插cur->next=newhead;newhead=cur;cur=next;}return newhead;
}
21.合并两个有序链表
21. 合并两个有序链表 - 力扣(LeetCode)
https://leetcode.cn/problems/merge-two-sorted-lists/description/
题目
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:


思路
创建一个新的结构体指针head作为合成的新链表,
创建两个指针,指向两个链表,将两个有序链表从头节点开始,依次进行比较,取较小的尾插到新的链表,通过while循环直到其中一个链表为空,不为空的链表直接尾插到新链表即可。
图示如下👇

在插入第一个节点前,我们也可以选择放一个哨兵位在头节点前面(哨兵位不算链表节点),这样就减少了第一次尾插时对tail是否为空的判断,代码更加简洁。
代码
不带哨兵位

带哨兵位

203.移除链表元素
203. 移除链表元素 - 力扣(LeetCode)
https://leetcode.cn/problems/remove-linked-list-elements/description/
题目
给你一个链表的头节点
head和一个整数val,请你删除链表中所有满足Node.val == val的节点,并返回 新的头节点 。
示例:

思路
这道题可以用双指针法,两个指针逐渐向后遍历,当遇到满足cur->val=val的节点时,(满足cur==hand时用头删的方法)cur到下一节点保存下一节点,同时删除满足条件的节点,每趟循环cur会赋给prev,cur再到下一节点,当cur遍历链表完为NULL的时候,prev刚好在最后一个节点,prev->next为链表结尾赋NULL。

代码
struct ListNode* removeElements(struct ListNode* head, int val) {struct ListNode* prev=NULL,* 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;}
相关文章:
[LeetCode]-876.链表的中间结点-206.反转链表-21.合并两个有序链表-203.移除链表元素
目录 876.链表的中间结点 题目 思路 代码 206.反转链表 题目 思路 代码 21.合并两个有序链表 题目 思路 代码 203.移除链表元素 题目 思路 代码 876.链表的中间结点 876. 链表的中间结点 - 力扣(LeetCode)https://leetcode.cn/problems/mi…...
通过git多人协调开发
多人协调开发过程中的问题解决。 1.新建远程的仓库分支; 2.拉取线上代码,并在VScode中打开; 3 拉完之后,打开VScode之后的左下角显示的就是当前分支的名称,点击之后即可随意切换; 4 创建本地分支࿰…...
CentOS 7 通过 yum 安装 MariaDB(Mysql)
这一版取消了修改配置的操作,改成每次创建数据库时手动指定字符集编码;这一版取消了修改密码的操作,保留 MariaDB 使用无密码的情况,即密码是 ""。 安装步骤: 以下操作都以 root 用户进行操作 以下操作都以 …...
【Solidity】Remix在线环境及钱包申请
好久没有学习区块链方面的知识了,目前通过自学大致掌握了Fabric联盟链的搭建,链码编写、部署,api调用,可以独立开发出一些基于fabric的应用,感觉开发出去中心化的应用还是很有意思的,因为他与之前开发的ssm…...
ARFoundation系列讲解 - 92 涂鸦效果
--- 视频来源于网络,如有侵权必删 --- 案例中使用的软件版本 Unity2023.1.17.f1c1ARFoundtaion 5.1.0Apple ARKit XR Plugin 5.1.0 Google ARCore XR Plugin 5.1.0技术分析 我们可以实时检测用户手指触摸的屏幕位置,从触摸位置投射一条射线(Raycast),再射线命中的目标位置…...
立创eda专业版学习笔记(8)(运行模式)
以前没注意过这个问题,我有2台电脑,都能登录eda专业版,但是一台是全在线模式,另外一台是半离线模式,虽然是同一个账号,但是打开里面的工程会发现,两边的工程完全不同,因为一台的工程…...
349.两个数组的交集+350.两个数组的交集II(set/multiset)
目录 一、349.两个数组的交集 二、350.两个数组的交集II 一、349.两个数组的交集 349. 两个数组的交集 - 力扣(LeetCode) class Solution { public:vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {//…...
数据结构与算法之排序: 桶排序 (Javascript版)
排序 排序:把某个乱序的数组变成升序或降序的数组 (这里用数组来做举例) 桶排序 根据元素的取值范围,创建多个桶, 每个桶代表一个区间范围 创建桶的数量和范围需要尽可能保证元素能够被均匀分布 接下来将元素放进对应的桶中,分别对每个桶中…...
Android studio新版本多渠道打包配置
最近公司套壳app比较多 功能也都一样只有地址,和app名字还有icon不一样 签名文件也是一样的,所以就研究了多渠道打包 配置如下: 在app下build.gradle配置 因为最新版as中禁用了BuildConfig 所以我们需要手动配置一下 android { //TODO 其他省略buildFe…...
PTA:后序和中序构造二叉树
后序和中序构造二叉树 题目输入格式输出格式输入样例(及其对应的二叉树) 代码 题目 本题目要求用后序序列和中序序列构造一棵二叉树(树中结点个数不超过10个),并输出其先序序列。 输入格式 在第一行中输入元素个数…...
二十三种设计模式全面解析-适配器模式的妙用:异构数据库和不同版本API的完美兼容!
在当今的软件开发领域,我们常常面对着与异构数据库和不同版本的API进行集成的挑战。这些系统和组件往往使用不同的数据结构和接口规范,导致我们的代码无法直接与它们进行交互。但是,不要担心!今天,我将向你揭示一个神奇…...
K7系列FPGA进行FLASH读写1——CCLK控制(STARTUPE2原语)
最近的工作涉及对 FPGA 进行远程更新,也就是通过远程通信接口将 .bin 文件送到 FPGA,然后写入 FLASH,这样当 FPGA 重新上电后就可以执行更新后的程序了。因此第一步工作就是进行 FLASH 的读写控制。 然而如果尝试配置 FLASH 管脚时࿰…...
【Kafka】基本概念
文章目录 一、消息队列的流派1.1 有Broker1.1.1 重topic1.1.2 轻topic 1.2 无Broker 二、kafka安装三、kafka基本术语四、发送消息五、消费消息六、单播消息七、多播消息八、查看消费组的详细信息九、主题topic十、分区十一、kafka中消息⽇志⽂件中保存的内容 一、消息队列的流…...
如何在Vue3项目中使用防抖节流技巧
前言 防抖节流是可以说是一种优化组件性能的技巧,可以有效减少组件中的渲染次数和计算量,从而提高组件的响应速度和用户体验。在Vue3中可以使用lodash库中的debounce和throttle函数来分别实现防抖和节流。当然也可以自行设计实现防抖节流函数࿰…...
快速排序(Java)
基本思想 快速排序Quicksort)是对冒泡排序的一种改进。 基本思想是分治的思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排…...
在ffmpeg中,如何把h264转换为rgb格式
在ffmpeg中,网络视频流h264为什么默认的转为YUV而不是其他格式 文章中介绍了,h264解码的时候是直接解码为yuv的,如果在使用的过程中 需要用到rgb的格式,我们该如何来转换这种格式呢? 在上面的文章中,我们已…...
【重磅】Cookies、headers、Session规律总结,搞定卡点
【重磅】Cookies规律总结,搞定卡点 登录后开始正式获取数据阶段: 不使用session: 放在请求头headers中 当如是:headers = {“user-agent”: “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36”,“Coo…...
【雷达原理】雷达杂波抑制方法
目录 一、杂波及其特点 1.1 什么是杂波? 1.2 杂波的频谱特性 二、动目标显示(MTI)技术 2.1 对消原理 2.2 数字对消器设计 三、MATLAB仿真 3.1 对消效果验证 3.2 代码 一、杂波及其特点 1.1 什么是杂波? 杂波是相对目标回波而言的,…...
Python-敲木鱼升级版(真手动版敲木鱼)
演示效果 需要安装的第三方库: pip install pygame # 加载音乐 pip install pillow # 加载图片 pip install mediapipe # 判断手势的模型 pip install opencv # 模型要用来处理图形 建议有独显和摄像头的可以尝试! 想着升级一下玩法,只有真敲…...
Websocket @ServerEndpoint不能注入@Autowired
在websocket中使用ServerEndpoint无法注入Autowired、Value 问题分析 Spring管理采用单例模式(singleton),而 WebSocket 是多对象的,即每个客户端对应后台的一个 WebSocket 对象,也可以理解成 new 了一个 WebSocket&…...
寻音捉影·侠客行企业应用:制药企业GMP培训录音中自动核查‘无菌操作’等SOP术语
寻音捉影侠客行企业应用:制药企业GMP培训录音中自动核查‘无菌操作’等SOP术语 1. 引言:制药企业的音频管理痛点 在制药企业的日常运营中,GMP(良好生产规范)培训是确保药品质量和生产安全的关键环节。每次培训都会产…...
开源阅读工具资源维护全指南:从故障诊断到主动防御
开源阅读工具资源维护全指南:从故障诊断到主动防御 【免费下载链接】Yuedu 📚「阅读」APP 精品书源(网络小说) 项目地址: https://gitcode.com/gh_mirrors/yu/Yuedu 开源阅读工具作为获取网络文学资源的重要途径࿰…...
科研人投稿破局:Paperxie AI 期刊写作,把「拒稿重写」变成「一次过审」
paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/期刊论文https://www.paperxie.cn/ai/journalArticleshttps://www.paperxie.cn/ai/journalArticles 在学术圈,「写期刊论文」从来都不是敲字那么简单 —— 要贴合期刊收稿方向、要挖创新点、要卡…...
OpenClaw剪藏工具:Qwen3-VL:30B分类保存网页内容到Flomo
OpenClaw剪藏工具:Qwen3-VL:30B分类保存网页内容到Flomo 1. 为什么需要智能剪藏工具 作为一个每天要处理大量信息的开发者,我长期被碎片化知识管理问题困扰。浏览器收藏夹里堆积着上千个未分类的网页,微信收藏夹里塞满来不及整理的截图&…...
告别本地编译卡顿:用CLion+Docker容器实现丝滑的Linux远程C++开发(保姆级教程)
告别本地编译卡顿:用CLionDocker容器实现丝滑的Linux远程C开发(保姆级教程) 在Windows或Mac上开发Linux C项目时,你是否经历过这些困扰:本地交叉编译环境配置复杂、编译速度缓慢、依赖冲突频发,或是开发环境…...
工业设计必看:SolidWorks曲面建模中的NURBS核心原理与7个避坑指南(2024版)
工业设计进阶:SolidWorks曲面建模中的NURBS核心原理与高阶实践(2024版) 在汽车外壳的流线型曲面或消费电子产品的有机形态背后,NURBS(非均匀有理B样条)技术始终是工业设计软件的核心引擎。作为SolidWorks等…...
大脑极简原理:比冯·诺依曼架构还简单的电磁路由网络 ——为什么意识和智能会从“对称判断”里自然涌现
前言:被复杂化的真相——大脑其实简单到爆我们从小被灌输一个观念:大脑是宇宙中最复杂的系统,860亿神经元、百万亿突触、无数神经递质,像一台精密到无法拆解的超级计算机。神经科学论文越写越长,模型越来越复杂&#x…...
git -- 替换项目已经存在的 git 远程仓库地址
要将项目中的 Git 远程仓库地址修改为新的地址(http://192.168.3.32:9980/java/transketch-portal-backend),你可以按照以下步骤操作:方法一:使用 Git 命令行打开终端或命令提示符导航到你的项目目录运行以下命令&…...
开源像素艺术生成工具上手指南:像素幻梦2.0-Stable镜像免配置部署
开源像素艺术生成工具上手指南:像素幻梦2.0-Stable镜像免配置部署 1. 像素幻梦简介 像素幻梦(Pixel Dream Workshop)是一款基于FLUX.1-dev扩散模型构建的下一代像素艺术生成工具。它采用16-bit像素工坊风格的视觉设计,为创作者提供沉浸式的AI绘图体验。…...
数字化、智能化、移动化,人力资源系统革新的三大法宝!
人力资源系统革新,打造企业人才发展新引擎在当今竞争激烈的商业环境中,企业的人才发展成为了决定其成败的关键因素之一。然而,传统的人力资源管理系统往往存在着诸多问题,如流程繁琐、数据不精准、缺乏智能化等,这些问…...
