三板斧解决leetcode的链表题
在《波奇学单链表》中我们提到单链表的两个特点
单向性。
头节点尾节点的特殊性导致分类讨论的情况。
如何看单链表?
让我们简化成下图
cur表示当前节点,下图表示cur移动,圆圈表示值

用哨兵卫节点(新的头节点)和把尾节点看成NULL来把头尾节点一般化。
struct ListNode*guard_h=(struct ListNode*)malloc(sizeof(struct ListNode));
struct ListNode*cur=guard_h;//作为移动节点
相当于有了头节点的前驱节点,可以cur->next=cur->next->next;循环
删除尾节点不用cur->next=NULL(cur是4的地址)直接cur->next=cur->next->next;
简化代码,但要注意释放开辟的空间,避免内存泄露。
快慢指针
创建两个指针一快一慢。
快慢指针找链表的中间节点:leetcode 876.链表中间节点
struct ListNode*fast=head,*slow=head;
int count=0;
while(fast)
{fast=fast->next;count++;if(count%2==0){slow=slow->next;}
}
return slow;//结束时fast为空,slow为中间节点的右边节点变式:求中间节点的左节点(如1-2-3-4求2)

fast走的节点数=总节点数,fast和slow指针走的节点数如图。
struct ListNode*fast=head,*slow=head;
int count=0;
while(fast)
{fast=fast->next;count++;if(count%2==1&&count>=3){slow=slow->next;}
}
return slow;//结束时fast为空,slow为中间节点的左边节点反转链表
leetcode:反转单链表
struct ListNode* reverseList(struct ListNode* head) {struct ListNode* newhead = NULL;struct ListNode* cur = head;while(cur){//next指针指向cur的下个节点struct ListNode* next = cur->next;cur->next = newhead;newhead = cur;cur = next;}合并有序链表
leetcode:合并有序链表
思路:不要试图在原链表中进行插入操作,再开一个新的头节点,把原来链表的值拿过来链接。
用哨兵节点可以简化代码,短的拼完后,再把剩下的链接在一起就行。
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){struct ListNode*cur=(struct ListNode*)malloc(sizeof(struct ListNode));cur->next=NULL;cur->val=0;struct ListNode*head=cur;while(list1&&list2){if(list1->val>list2->val){head->next=list2;list2=list2->next;}else{head->next=list1;list1=list1->next;}head=head->next;}struct ListNode*list3=(list1!=NULL?list1:list2);while(list3){head->next=list3;list3=list3->next;head=head->next;}return cur->next;
}合并链表,快慢指针,以及链表逆序这三板斧掌握了就可以解决leetcode上大部分的链表题。
示例:链表排序
思路:快慢指针找中间节点,再用中间节点不断分割,分割到只有一个节点或空链表。
一节点链表进行合并有序链表,最后把新链表再进行合并有序直到所有链表都合并完成。
总而言之,最基础就是这三个。
相关文章:
三板斧解决leetcode的链表题
在《波奇学单链表》中我们提到单链表的两个特点单向性。头节点尾节点的特殊性导致分类讨论的情况。如何看单链表?让我们简化成下图cur表示当前节点,下图表示cur移动,圆圈表示值用哨兵卫节点(新的头节点)和把尾节点看成NULL来把头尾节点一般化…...
全生命周期的云原生安全框架
本博客地址:https://security.blog.csdn.net/article/details/129423036 一、全生命周期的云原生安全框架 如图所示: 二、框架说明 在上图中,我们从两个维度描述各个安全机制,横轴是开发和运营阶段,细分为编码、测试…...
【本地网站上线】ubuntu搭建web站点,并内网穿透发布公网访问
【本地网站上线】ubuntu搭建web站点,并内网穿透发布公网访问前言1. 本地环境服务搭建2. 局域网测试访问3. 内网穿透3.1 ubuntu本地安装cpolar3.2 创建隧道3.3 测试公网访问4. 配置固定二级子域名4.1 保留一个二级子域名4.2 配置二级子域名4.3 测试访问公网固定二级子…...
电脑怎么重装系统?教你轻松掌握这些方法
重新安装计算机系统有两种原因:一种是计算机系统可以正常使用,但是电脑比较卡,为了提高它的运行速度,所以想要通过重新安装系统来解决这个问题;另一种原因是计算机系统文件丢失,系统出现蓝屏,或者黑屏的情况…...
leetcode-每日一题-2379(简单,字符串)
久违的简单题......给你一个长度为 n 下标从 0 开始的字符串 blocks ,blocks[i] 要么是 W 要么是 B ,表示第 i 块的颜色。字符 W 和 B 分别表示白色和黑色。给你一个整数 k ,表示想要 连续 黑色块的数目。每一次操作中,你可以选择…...
SLF4J日志框架在项目中使用
介绍 SLF4J全称“Simple Logging Facade for Java”,作为各种日志框架的简单门面。例如: java.util.logging、logback 、 reload4j等。只需要切换日志框架的jar包依赖就可以切换日志框架。 SLF4J支持的日志框架包含如下: log4j:…...
Spark MLlib 模型训练
Spark MLlib 模型训练决策树随机森林GBDTSpark MLlib 开发框架下 : 监督学习 : 回归 (Regression) , 分类 (Classification) , 协同过滤 (Collaborative Filtering)非监督学习 : 聚类 (Clustering) 、频繁项集 (Frequency Patterns) 例子分类 : 算法分类 : 算法分类算法子分类…...
Python中变量的作用域精讲
文章目录前言一、局部变量二、全局变量前言 变量的作用域是指程序代码能够访问该变量的区域,如果超出该区域,再访问时就会出现错误。在程序中,一般会根据变量的 “有效范围” 将变量分为 “全局变量” 和 “局部变量”。 一、局部变量 局部变…...
数据仓库工程师的工作职责的相关介绍
1. BI 开发工程师的工作内容是什么? BI开发工程师(Business Intelligence Developer)是负责设计和开发企业级BI系统的专业人员。他们的主要工作是从多个数据源中提取、转换、加载和分析数据,以支持企业决策。以下是BI开发工程师的…...
ESP UART 介绍
1 UART 介绍 UART 是一种以字符为导向的通用数据链,可以实现设备间的通信。异步传输的意思是不需要在发送数据上添加时钟信息。这也要求发送端和接收端的速率、停止位、奇偶校验位等都要相同,通信才能成功。 1.1 UART 通信协议 一个典型的 UART 帧开始…...
第十三届蓝桥杯省赛Python大学B组复盘
目录 一、试题B:寻找整数 1、题目描述 2、我的想法 3、官方题解 4、另解 二、试题E:蜂巢 1、题目描述 2、我的想法 3、官方题解 三、试题F:消除游戏 1、题目描述 2、我的想法(AC掉58.3%,剩下全超时&#x…...
linux入门---vim的配置
这里写目录标题预备知识如何配置vimvim一键配置预备知识 在配置vim之前大家首先得知道一件事就是vim的配置是一人一份的,每个用户配置的vim都是自己的vim,不会影响到其他人,比如说用户xbb配置的vim是不会影响到用户wj的,虽然不同…...
Python简写操作(for、if简写、匿名函数)
Python简写操作(for、if简写、匿名函数)1. for 简写1.1 一层 for 循环1.2 两层 for 循环2. if 简写3. for 与 if 的结合简写4. 匿名函数 lambda1. for 简写 举个例子: y [1, 2, 3, 4, 5, 6] result [(i * 2) for i in y] print(result)# …...
毕业设计常用模块之温湿度模块DHT11模块使用
DHT11是一款可以测量温度数据和湿度数据的传感器 产品特点 暖通空调、除湿器、农业、冷链仓储、测试及检测设备、消费品、汽车、自动控制、数据记录器、气 象站、家电、湿度调节器、医疗、其他相关湿度检测控制 外形尺寸 第3管脚:NC 是没有用的 典型电路 通信方式…...
Cadence Allegro 导出Design Rules Net Shorts Check(DRC)Report报告详解
⏪《上一篇》 🏡《上级目录》 ⏩《下一篇》 目录 1,概述2,Design Rules Net Shorts Check(DRC)Report作用3,Design Rules Net Shorts Check(DRC)Report示例4,Design Rules Net Shorts Check(DRC)Report导出方法4.1,方法14.2,方法2...
第 46 届世界技能大赛浙江省选拔赛“网络安全“项目C模块任务书
第46届世界技能大赛浙江省选拔赛"网络安全"项目C模块(夺旗行动(CTF)挑战)第46届世界技能大赛浙江省选拔赛"网络安全"项目C模块第一部分 WEB第二部分 CRYPTO第三部分 REVERSE第四部分 MISC第五部分 PWN第46届世…...
C++:详解C++11 线程(一):MingGW 各版本区别及安装说明
MingGW 各版本区别一:MinGW、MinGW-w64 简介二:MinGW 各版本参数说明三:下载解压一:MinGW、MinGW-w64 简介 MinGW(全称为 Minimalist GNU for Windows),它实际上是将经典的开源 C 语言编译器 G…...
第十二章 ArrayList和 LinkedList的区别
ArrayList:基于动态数组(自动扩容),连续内存存储,由于底层是数组,适合使用下标进行访问,但扩容一直都是数组的缺点,所以使用尾插法进行扩容可以有效提高扩容效率。还有就是创建Array…...
案例06-复用思想的接口和SQL
目录 一:背景介绍 二:思路&方案 三:过程 1.Controller层接口的复用 2.Mapper层sql语句的复用 四:总结 一:背景介绍 我们在开发项目的过程中非常容易出现的一种现象就是用什么我就直接写什么,就像我…...
【Java学习笔记】17.Java 日期时间(2)
前言 本章继续介绍Java的日期时间。 Calendar类 我们现在已经能够格式化并创建一个日期对象了,但是我们如何才能设置和获取日期数据的特定部分呢,比如说小时,日,或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案…...
公考备考提分真相:从学员视角解析粉笔讲练测评闭环教学体系
引言在公务员考试备考赛道中,无数考生都面临同一个核心困惑:花费时间和金钱报名培训机构,究竟能不能实现有效提分?不少备考者有过备考失利的经历,也踩过传统公考培训的诸多坑。很多传统课程老师讲课条理清晰、内容丰富…...
深入解析91160-cli医疗挂号自动化系统:架构设计与实战部署指南
深入解析91160-cli医疗挂号自动化系统:架构设计与实战部署指南 【免费下载链接】91160-cli 健康160全自动挂号脚本,捡漏神器 项目地址: https://gitcode.com/gh_mirrors/91/91160-cli 在当今医疗资源紧张的环境下,医院挂号难已成为普遍…...
实战指南:如何通过Vosk API实现95%+准确率的离线语音识别系统
实战指南:如何通过Vosk API实现95%准确率的离线语音识别系统 【免费下载链接】vosk-api Offline speech recognition API for Android, iOS, Raspberry Pi and servers with Python, Java, C# and Node 项目地址: https://gitcode.com/GitHub_Trending/vo/vosk-ap…...
为AI智能体构建可编程邮箱:mailbot实战指南
1. 项目概述:为AI智能体打造专属的“可编程邮箱”如果你正在开发一个AI智能体,无论是客服机器人、自动化工作流还是个人助理,让它具备收发邮件的能力往往是刚需。传统的做法是什么?要么去折腾Gmail的API,忍受OAuth授权…...
构建AI助手持久记忆系统:Rekall项目实践与MCP协议应用
1. 项目概述:为你的AI助手构建一个“第二大脑”如果你和我一样,日常重度依赖 Claude Code、Cursor 这类AI编程助手,那你一定遇到过这个痛点:每次开启一个新的会话,AI助手就像得了“健忘症”,对之前讨论过的…...
AI驱动游戏开发:Godogen自动化流水线全解析
1. 项目概述:当AI成为你的游戏开发合伙人 如果你是一名独立游戏开发者,或者对用Godot引擎做点小玩意儿感兴趣,那你肯定体会过那种感觉:一个绝妙的点子在你脑海里盘旋,但一想到要从零开始搭场景、写脚本、画素材&#x…...
AI教材编写利器!低查重AI写教材工具,快速生成30万字专业教材!
在开始编写教材之前,选择合适的工具真的是一个“非常纠结”的过程!如果用常见的办公软件来写,功能太简单,框架设计和格式处理都得自己手动来搞;而要是尝试那些专业的编写工具,又会觉得操作太复杂࿰…...
2026年十大RPA自动化工具盘点:从国际巨头到国产新秀
一、RPA技术的前世今生说起RPA(机器人流程自动化),很多人以为这是近几年才冒出来的新概念。其实不然,自动化的基因早在百年前就埋下了种子。1913年,福特汽车搞出了世界上第一条流水线,那是工业自动化的起点…...
从找石油到防灾害:地震勘探技术如何跨界守护城市安全?
地震勘探技术的跨界革命:从油气勘探到城市安全守护者 上世纪20年代,当第一批地球物理学家尝试用炸药激发地震波来寻找石油时,他们或许不会想到,这项技术会在百年后成为保护现代城市安全的"透视眼"。传统的地震勘探技术…...
如何在Windows系统上快速搭建TigerVNC远程桌面连接
如何在Windows系统上快速搭建TigerVNC远程桌面连接 【免费下载链接】tigervnc High performance, multi-platform VNC client and server 项目地址: https://gitcode.com/gh_mirrors/ti/tigervnc 想要在Windows电脑上轻松访问和控制远程服务器吗?TigerVNC作为…...
