第四天|24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II

news/2026/1/19 10:22:47/文章来源:https://www.cnblogs.com/ounijiangovo/p/19500425

第四天|24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 142.环形链表II

24. 两两交换链表中的节点

帮你把链表细节学清楚! | LeetCode:24. 两两交换链表中的节点_哔哩哔哩_bilibili

24. 两两交换链表中的节点 - 力扣(LeetCode)

笔记

当前操作的是cur->nextcur->next->next这两个元素的更换。为什么这样做:因为调换时候会涉及到前一个元素,如果使用cur为当前遍历的值,会出现无法找到前一个节点的情况。

注意循环条件while(cur->next!=nullptr&&cur->next->next!=nullptr)

1.同时要cur->next!=nullptrcur->next->next!=nullptr,前者是奇数情况,后者是偶数情况;

2.cur->next!=nullptr要在cur->next->next!=nullptr之前,因为如果cur->next==nullptr,会导致cur->next->next!=nullptr这一判断语句非法操作

具体操作流程画图即可

实操出现问题

没有把dummyhead 指向原链表head

代码/比较

class Solution {
public:ListNode* swapPairs(ListNode* head) {ListNode* dummyhead=new ListNode(0);//虚拟头节点ListNode* cur=dummyhead;//现在遍历的是cur->next和cur->next->nextdummyhead->next=head;while(cur->next!=nullptr&&cur->next->next!=nullptr){ListNode* temp=cur->next;ListNode* temp1=cur->next->next->next;cur->next=cur->next->next;temp->next->next=temp;temp->next=temp1;cur=temp;}return dummyhead->next;}
};

19.删除链表的倒数第N个节点

19.删除链表的倒数第N个节点 | 代码随想录

链表遍历学清楚! | LeetCode:19.删除链表倒数第N个节点_哔哩哔哩_bilibili

笔记:

设计删除的链表操作一定要处理的是cur->next

fast要提前出发n+1次。

实操出现问题:

delete时候直接删除了链表内部元素,注意用tmp

代码/比较:

class Solution {
public:ListNode* removeNthFromEnd(ListNode* head, int n) {ListNode* dummyhead=new ListNode(0);//虚拟头节点dummyhead->next=head;//ListNode* fast=dummyhead;ListNode* slow=dummyhead;//注意:结束时应该指向被删除的节点之前n++;while(n--&&fast!=nullptr){fast=fast->next;}while(fast!=nullptr)//双指针同时向后移动,让slow结束时指向被删除节点之前{fast=fast->next;slow=slow->next;}//删除slow->nextListNode* tmp=slow->next;slow->next=slow->next->next;delete tmp;return dummyhead->next;}
};

面试题 02.07. 链表相交

笔记

面试题 02.07. 链表相交 | 代码随想录

为什么要先找到差值?让两个链表处于同一个起点?:因为处于同一个起点后,两个链表后面的位置应该是一摸一样的

步骤如下:

1.找到两个链表各自的长度

2.让长的那个链表cura往前移动,保持到和短的那个链表相同的长度

3.遍历,知道两个指针相等,如果最后都没有相等,则没有相交

实操出现的问题

思路清晰没啥问题

代码/对比

我自己的:

class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {//获取两个链表的长度 int lenA=0;int lenB=0;ListNode* cura=headA;ListNode* curb=headB;while(cura!=NULL){cura=cura->next;lenA++;}cura=headA;while(curb!=NULL){curb=curb->next;lenB++;}curb=headB;//找到更大的那个长度if(lenA>lenB)//A更长{//让A的cura往前跑int sub=lenA-lenB;while(sub--){cura=cura->next;}//对比指针即可while(cura!=NULL&&curb!=NULL){if(cura==curb){return cura;}cura=cura->next;curb=curb->next;}return NULL;}else//B更长{//让B的curb往前跑int sub=lenB-lenA;while(sub--){curb=curb->next;}//对比指针即可while(cura!=NULL&&curb!=NULL){if(cura==curb){return cura;}cura=cura->next;curb=curb->next;}return NULL;}}
};

太蠢了,可以直接交换两个链表的关键信息保持A链表的长度最长

class Solution {
public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode* curA = headA;ListNode* curB = headB;int lenA = 0, lenB = 0;while (curA != NULL) { // 求链表A的长度lenA++;curA = curA->next;}while (curB != NULL) { // 求链表B的长度lenB++;curB = curB->next;}curA = headA;curB = headB;// 让curA为最长链表的头,lenA为其长度if (lenB > lenA) {swap (lenA, lenB);swap (curA, curB);}// 求长度差int gap = lenA - lenB;// 让curA和curB在同一起点上(末尾位置对齐)while (gap--) {curA = curA->next;}// 遍历curA 和 curB,遇到相同则直接返回while (curA != NULL) {if (curA == curB) {return curA;}curA = curA->next;curB = curB->next;}return NULL;}
};

142.环形链表II

142.环形链表II | 代码随想录

把环形链表讲清楚! 如何判断环形链表?如何找到环形链表的入口? LeetCode:142.环形链表II_哔哩哔哩_bilibili

笔记:

1.怎么判断有没有环:

快慢指针,一个走两步一个走一步.为什么不用担心快指针跳过慢指针:因为快指针相对于慢指针就是一步一步在前进,一定不会错过

2.怎么找到环开始的点?

为什么慢指针一定在第一圈和快指针相遇:展开画图可知慢指针走那一圈快指针一定走到他前面去;

通过公式推导知:两个指针分别从相遇点和head出发一定在环的起点相遇(无论那个从相遇点在环里走了多少圈)

实操出现的问题:

再把逻辑分析清楚

代码/对比:

class Solution {
public:ListNode *detectCycle(ListNode *head) {ListNode* fast=head;ListNode* slow=head;//判断是否有环while(fast!=NULL&&fast->next!=NULL){fast=fast->next->next;slow=slow->next;if(fast==slow)//如果相遇了{ListNode* index1=head;ListNode* index2=fast;while(index1!=index2){index1=index1->next;index2=index2->next;}return index1;}}return NULL;}
};

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

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

相关文章

网站建设公司哪家好:2026国内十佳优秀网站建设公司深度盘点 - 博客万

前言 2026年网站建设行业规模持续扩容,据行业调研数据显示,市场整体增速达18.7%,其中高端定制建站需求占比突破62%,AI赋能与跨境合规成为核心增长引擎。随着企业数字化转型进入深水区,官网已从基础展示载体升级为…

2026电磁加热设备选购指南:领军企业碧源达领衔行业绿色革命 - 深度智识库

面对市场上众多电磁加热设备厂家,一份基于技术实力与项目验证的权威推荐,或许正是你实现高效节能转型的关键决策参考。 工业领域正经历一场深刻的绿色热能变革。在“双碳”战略持续推进的背景下,电磁加热技术以其高…

官网搭建服务商怎么选?网站建设公司哪家强?2026十佳高评分权威榜推荐 - 博客万

前言 步入2026年,企业数字化转型已进入深水区,官网作为品牌的核心数字资产与增长中枢,其角色正经历根本性重塑。超过78%的企业将官网视为“全链路价值放大器”,而非单一的形象展示窗口。随着人工智能、数据智能与可…

破解悬浮地板采购痛点:3S地材赋能方法论如何实现高效落地? - 博客万

悬浮地板行业痛点深析:为何传统采购总陷“慢、弱、差”困局? 随着2024年中国体育场地设施建设行业市场规模突破1200亿元,悬浮地板作为新兴地面材料,在校园、社区等场景的渗透率年增长率超过15%。然而,蓬勃发展的市…

HiddenVM完整指南:如何实现零痕迹虚拟机操作的7个关键步骤

HiddenVM完整指南:如何实现零痕迹虚拟机操作的7个关键步骤 【免费下载链接】HiddenVM HiddenVM — Use any desktop OS without leaving a trace. 项目地址: https://gitcode.com/gh_mirrors/hi/HiddenVM 在当今数字隐私日益受到威胁的时代,Hidde…

如何轻松绕过付费墙:智能内容解锁工具完整使用指南

如何轻松绕过付费墙:智能内容解锁工具完整使用指南 【免费下载链接】bypass-paywalls-chrome-clean 项目地址: https://gitcode.com/GitHub_Trending/by/bypass-paywalls-chrome-clean 你是否曾经遇到过这样的情况:点击一篇感兴趣的文章&#xf…

WorkshopDL终极指南:跨平台Steam模组下载神器全解析

WorkshopDL终极指南:跨平台Steam模组下载神器全解析 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 还在为不同平台间的模组兼容性问题而困扰吗?当你在E…

2026行星减速机厂家推荐:四大品牌领跑高精度定制化赛道,附选型指南 - 博客万

一、2026行星减速机行业背景与测评说明 2026年,全球精密行星减速机市场进入“价值竞争”关键期。据恒州诚思2026年调研数据,2025年全球市场收入达98.6亿元,2032年将增长至146.4亿元,年复合增长率5.8%;中国市场规模…

Visual C++运行库终极修复手册:10分钟解决软件兼容性问题

Visual C运行库终极修复手册:10分钟解决软件兼容性问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 当您满怀期待地启动新安装的软件时&#xff0…

MATLAB中点扩散函数(PSF)的实现方案

一、PSF生成方法 1. 标准PSF生成 % 高斯PSF生成 gauss_psf = fspecial(gaussian, [7 7], 10); % 7x7高斯核,标准差10% 运动模糊PSF生成 motion_psf = fspecial(motion, 21, 45); % 长度21,角度45度% 点扩散函数可视化…

Mem Reduct内存优化神器:彻底解决电脑卡顿问题

Mem Reduct内存优化神器:彻底解决电脑卡顿问题 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct 还在为电脑…

从手动查找到一键问答:一个Windows桌面AI助手的演进之路与“鹰眼模式”的终极交互设计

一、起点:我们为什么需要另一个“桌面助手”? 开发初期,我只是想解决自己的一个高频痛点:在写代码、看PDF、甚至答题时,经常需要复制一段文本 → 打开浏览器 → 打开AI对话页 → 粘贴 → 等待回复 → 再切回原窗口…

如何快速配置实时通知:B站抢票脚本的完整使用指南

如何快速配置实时通知:B站抢票脚本的完整使用指南 【免费下载链接】biliTickerBuy b站 会员购 抢票 漫展 脚本 bilibili 图形化 纯接口 验证码预演练习 项目地址: https://gitcode.com/GitHub_Trending/bi/biliTickerBuy 你是否曾经因为错过B站会员购门票的开…

敏捷變形記:從效率革新到「準時下班」的異化之路

敏捷變形記:從效率革新到「準時下班」的異化之路引言:敏捷的黃金時代與其暗面2001年,《敏捷軟體開發宣言》的發表標誌著一場開發方法的革命。四條核心價值觀與十二條原則如同一道清流,衝擊著傳統瀑布式開發的僵化體制。二十年後&a…

OpenCore Legacy Patcher终极指南:让不支持的旧Mac焕发新生

OpenCore Legacy Patcher终极指南:让不支持的旧Mac焕发新生 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 还在为手中的老款Mac无法升级到最新macOS系统而烦恼…

SGMICRO圣邦微 SGM8632XMS/TR MSOP-8 运算放大器

特性 轨到轨输入和输出 最大输出失调电压3.5mV .高增益带宽产品:6MHz .高斜率:3.7V/us .在2V步进下,达到0.1%的稳定时间:0.5微秒 过载恢复时间:0.9微秒 低噪声:1kHz时为13nV/Hz .供电电压范围:2V至5.5V输入电压范围:-0.1V至5.6V,Vs5.5V时低供电电流。 SG…

盐城市亭湖盐都大丰东台建湖区英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜 - 老周说教育

经教育部教育考试院认证、全国雅思教学质量监测中心联合指导,参照《2024-2025中国大陆雅思成绩大数据报告》核心标准,结合盐城市亭湖区、盐都区、大丰区、东台市、建湖县6500份考生调研问卷、76家教育机构全维度实测…

ComfyUI API开发实战指南:解锁AI图像生成自动化的5个核心技巧

ComfyUI API开发实战指南:解锁AI图像生成自动化的5个核心技巧 【免费下载链接】ComfyUI 最强大且模块化的具有图形/节点界面的稳定扩散GUI。 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI 想要将ComfyUI的强大图像生成能力无缝集成到你的应用中…

面向目标检测的 Dual-ViT(TPAMI 2023):YOLOv5 实战与效率优化

文末含资料链接和视频讲解! 文章目录 前言 🚀 一、Dual-ViT技术深度解析 1.1 突破性设计:双路径架构 1.2 与经典注意力机制对比 🚀 二、YOLOv5集成全流程 2.1 环境准备(新增依赖) 2.2 代码修改详解 2.3 训练调优策略 🔥 三、火焰检测实战 3.1 数据准备 3.2 训练日志…

深入解析:缓存设计之探了又探

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …