快慢指针的应用(题目来源力扣oj训练)

快慢指针

快慢指针一般用来找到链表的中间节点,就是直接搞两个指针,快指针的移动是慢指针的两倍,那么为什么快慢指针可以找到中间节点,因为假设一个为n的链表,快指针走完慢指针也就是n/2。

具体案例

找链表的中间节点

typedef struct ListNode ListNode;
struct ListNode* middleNode(struct ListNode* head) {ListNode *lowhead,*fasthead;lowhead=fasthead=head;//注意一点过要牢记fasthead&&fasthead->next一定不能为空while(fasthead&&fasthead->next){lowhead=lowhead->next;fasthead=fasthead->next->next;}return lowhead;
}

2.输入一个链表,输出该链表中倒数第k个结点

typedef struct ListNode ListNode;
int kthToLast(struct ListNode* head, int k){//可以利用快慢指针的思想让快指针,先移动k个值,然后快慢一起移动//当快指针指向空的时候慢指针刚好就是所要查找的位置ListNode *fast,*slow;fast=slow=head;for(int i=0;i<k;i++){fast=fast->next;}while(fast){slow=slow->next;fast=fast->next;}return slow->val;
}

 3.相交链表

例题如下

解析:证明相交链表,首先要对俩表进行遍历然后计算二者的差值让长链表先移动插值个节点,最后保证两个链表遍历到最后时两个元素是否为相同节点

typedef struct ListNode ListNode;
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {ListNode *L1,*L2;L1=headA;L2=headB;int sizeA=0;int sizeB=0;while(L1){L1=L1->next;sizeA++;}while(L2){L2=L2->next;sizeB++;}ListNode *longlist=headA;ListNode *shortlist=headB;int gap=abs(sizeA-sizeB);if(sizeA<sizeB){longlist=headB;shortlist=headA;}while(gap--){longlist=longlist->next;}while(longlist&&shortlist){if(longlist==shortlist){return longlist;}longlist=longlist->next;shortlist=shortlist->next;}return NULL;
}

4.环行列表(利用快慢指针)

例题如上

解析如下:利用快慢指针进行判断,只要能证明快慢指针在环中一定会相遇,即可解释这个问题

证明如下:

1.当快指针是慢指针的2倍(这样每次快的比慢的多1),设它相差的距离为N,那么就会出现

N-1,N-2,N-3.....1,0。这样最后还是会出现相遇的情况。

2.当快指针是慢指针的三倍时(这样每次快的比慢的多2,设距离相差为N,那么这时候就要讨论 N的奇偶问题。N为偶数时N-2,N-4,N-6....0, N为奇数时N-2,N-4....1,-1(这种情况就是出现了套圈)。套圈分为两种

 

typedef struct ListNode ListNode;
bool hasCycle(struct ListNode *head) {ListNode *fast,*slow;fast=slow=head;while(fast&&fast->next){fast=fast->next->next;slow=slow->next;if(fast==slow){return true;}}return false;
}

 5.环形链表

 

解析示意图

解题思路: 相遇点和头节点到入环的节点距离相同,证明如下:设整个环形为R,快指针:NR+L+x

慢指针:L+X。2(L+X)=NR+L+x-->L+X=NR-->L=NR-X-->L=(N+1)R+R-X;所以推出L==R-X;

typedef struct ListNode ListNode;
struct ListNode *detectCycle(struct ListNode *head) {//先找到相遇点,从相遇点向后走ListNode *fast,*slow;fast=slow=head;while(fast&&fast->next){fast=fast->next->next;slow=slow->next;if(fast==slow){ListNode *pcur;pcur=head;while(pcur!=slow){pcur=pcur->next;slow=slow->next;}return pcur;} }return NULL;
}

总结

 快慢指针在数据结构上的用法还是非常的灵活,并且效率还是非常的高效,这些知识还是比较重要的,后续还有会继续更新,最后期待各位大佬的指正。

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

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

相关文章

如何使用在线工具将手机相册中的图片转换为JPG格式

我们经常在手机相册中保存大量的图片&#xff0c;无论是家庭聚会的照片还是旅行的瞬间&#xff0c;每一幅图像都承载着珍贵的记忆。然而&#xff0c;有时候我们会遇到图片格式不兼容的问题&#xff0c;尤其是在需要将图片分享到特定平台或编辑时。 例如&#xff0c;某些社交平台…

2024年充电宝推荐!哪个牌子充电宝好?充电宝选购大全!

大家在选购充电宝的时候是否有注意要选择一款安全性高的充电宝呢&#xff1f;是选择好看的充电宝还是选择性价比高的呢&#xff1f;充电宝的安全问题不容忽视&#xff0c;其中最令人担忧的便是爆炸风险。那么到底哪些充电宝是比较适合我们日常使用的呢&#xff1f;毕竟现在在当…

计网ip层重要面经总结

文章目录 127.0.0.1, localhost, 0.0.0.0有什么不同?ipv6还需要NAT吗&#xff1f;DNS查询服务器的基本流程浏览器输入一个URL到显示器显示的过程PING是怎么工作的&#xff1f;ipv4和ipv6究竟有哪些区别&#xff1f;什么是跨域&#xff0c;什么情况下会发生跨域问题&#xff1f…

WINUI或WPF灵活使用样式、控件模板、自定义控件、用户控件

在WINUI与WPF 中&#xff0c;控件模板&#xff08;ControlTemplate&#xff09;、样式&#xff08;Style&#xff09;、自定义控件&#xff08;CustomControl&#xff09;和用户控件&#xff08;UserControl&#xff09;都是构建复杂和灵活用户界面的重要工具&#xff0c;但它们…

使用gradio部署微调后的模型

文章目录 概要整体架构流程技术细节小结 概要 使用gradio部署微调后的模型 整体架构流程 gradio前期学习&#xff0c;以下是一些常见的输入输出组件&#xff0c;有些即可输入也可输出 gr.Audio(sources[microphone, upload], # 音频输入sources&#xff0c;支持录制或者上传…

【自撰写】【国际象棋入门】第11课 对局实例分析(一)

第11课 对局实例分析&#xff08;一&#xff09; 本次课中&#xff0c;我们来分析一例真实的对局。对局弈于“国象联盟”APP&#xff0c;日期为2024年6月13日星期四&#xff0c;我执黑。开局伊始&#xff0c;白方的布局略占优势&#xff0c;中局阶段黑方一直保持着微弱的领先&…

共研算法未来 百望云金盾大模型入选“BPAA全球应用算法模型典范”Top50

当大型预训练模型以破竹之势迅速迭代&#xff0c;它们在人工智能领域的核心地位与深远意义何在&#xff1f;在这场由大模型引领的智能革新潮流中&#xff0c;又如何塑造并推动着整个算法产业的未来蓝图&#xff1f; 在2024世界人工智能大会&#xff08;WAIC&#xff09;的第二天…

可的哥Codigger:解锁项目成功密钥,一键体检提升代码质量

在日新月异的商业竞技场中&#xff0c;项目的质量犹如生命线&#xff0c;直接关联到成功的彼岸。为了确保您的项目在激烈竞争中脱颖而出&#xff0c;可的哥Codigger项目体检工具应运而生&#xff0c;它不仅是您项目健康的守护者&#xff0c;更是通往成功之路的加速器。 【一键诊…

洛谷 P1056 [NOIP2008 普及组 T2]:排座椅 ← 贪心算法

【题目来源】https://www.luogu.com.cn/problem/P1056https://www.acwing.com/problem/content/436/【题目描述】 上课的时候总有一些同学和前后左右的人交头接耳&#xff0c;这是令小学班主任十分头疼的一件事情。 不过&#xff0c;班主任小雪发现了一些有趣的现象&#xff0c…

十、Java集合 ★ ✔(模块18-20)【泛型、通配符、List、Set、TreeSet、自然排序和比较器排序、Collections、可变参数、Map】

day05 泛型,数据结构,List,Set 今日目标 泛型使用 数据结构 List Set 1 泛型 1.1 泛型的介绍 ★ 泛型是一种类型参数&#xff0c;专门用来保存类型用的 最早接触泛型是在ArrayList&#xff0c;这个E就是所谓的泛型了。使用ArrayList时&#xff0c;只要给E指定某一个类型…

springboot的全局异常处理

主要有两个异常注解&#xff0c;RestControllerAdvice和 ExceptionHandler(Exception.class) 案例 package com.lwy.exception;import com.lwy.pojo.Result; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotati…

C语言之大小端理解

目录 1前言2 大小端理解与区分3 大小端的识别和基本切换操作4 总结 1前言 在汽车CAN通讯报文中往往会接触到Intel类型和motorola类型&#xff0c;实际项目中涉及到多机通讯也会接触到大小端问题 2 大小端理解与区分 大端(Big_Endian) :低字节放在高地址小端(Little_Endian):…

新华三H3CNE网络工程师认证—VLAN使用场景与原理

通过华三的技术原理与VLAN配置来学习&#xff0c;首先介绍VLAN&#xff0c;然后介绍VLAN的基本原理&#xff0c;最后介绍VLAN的基本配置。 一、传统以太网问题 在传统网络中&#xff0c;交换机的数量足够多就会出现问题&#xff0c;广播域变得很大&#xff0c;分割广播域需要…

ios安装建立关系:Xinstall如何化繁为简

在移动应用日益丰富的今天&#xff0c;iOS设备上的App安装与更新成为了用户日常操作的一部分。然而&#xff0c;对于开发者而言&#xff0c;如何在iOS平台上顺利建立安装关系&#xff0c;确保应用的顺利推广与用户的持续使用&#xff0c;却是一个不容忽视的难题。今天&#xff…

Large Language Model系列之二:Transformers和预训练语言模型

Large Language Model系列之二&#xff1a;Transformers和预训练语言模型 1 Transformer模型 Transformer模型是一种基于自注意力机制的深度学习模型&#xff0c;它最初由Vaswani等人在2017年的论文《Attention Is All You Need》中提出&#xff0c;主要用于机器翻译任务。随…

誉海康运携手绿葆取袋机,暖心陪诊,守护您的就医之路

在繁忙的都市生活中&#xff0c;我们时常为了梦想和事业奔波&#xff0c;却往往忽略了身边最亲近的人——父母的健康。当父母因身体不适需要就医时&#xff0c;面对陌生的医院环境和繁琐的就诊流程&#xff0c;他们可能感到迷茫和无助。 这时&#xff0c;一份及时、贴心的陪诊…

石头剪刀布休息(猜拳游戏)

自己写的简易版 //2024.07.17 import java.util.Scanner; import java.util.Random; public class GuessingGame {public static void main(String[] args) {Tom tm new Tom();System.out.println("");for (int i 0; i < 3; i) {Random r new Random();tm.com…

STM32智能交通监测系统教程

目录 引言环境准备智能交通监测系统基础代码实现&#xff1a;实现智能交通监测系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;交通监测与管理问题解决方案与优化收尾与总结 1. 引言 智能交通监测系统通…

YOLOv10改进 | 检测头 | 融合渐进特征金字塔的检测头【AFPN4】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

求解答word图标变白

把WPS卸载了之后就变成白色了&#xff0c;然后在注册表中把word的地址改成office word的地址之后图标变成这样了&#xff0c;怎么办