面试热点题:环形链表及环形链表寻找环入口结点问题

news/2024/12/2 2:08:13/

环形链表

问题:
给你一个链表的头节点 head ,判断链表中是否有环。
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。
如果链表中存在环 ,则返回 true 。 否则,返回 false 。
来源:力扣(LeetCode)环形链表
在这里插入图片描述
思路一:暴力解法
我们从头遍历链表,每遍历一个节点,就再从头检查该节点是否已经出现过,如果直到遍历完也没出现则为false,反之为true。这是我们首先可以想到的暴力解法!时间复杂度O(N^2)空间复杂度O(1)。

思路二:快慢指针
我们创建两个指针slow与fast,让他们同时指向头节点,slow每次走一步,fast每次走两步。如果循环最后的结果是 slow=fast 那么链表是环,如果 fast=nullptr 那么链表不是环。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
道理跟两个人一起跑步是一样的,跑道是环状的,且一直跑,那么快的那个人一定会在同一起跑线开始跑后再一次追上慢的人。
代码:

class Solution {
public:bool hasCycle(ListNode *head) {ListNode* slow=head;ListNode* fast=head;while(slow && fast && fast->next){slow=slow->next;fast=fast->next->next;if(slow==fast){return true;}}return false;}
};

易错点:
在这里插入图片描述

链表中环的入口节点

问题:
给定一个链表,返回链表开始入环的第一个节点。 从链表的头节点开始沿着 next 指针进入环的第一个节点为环的入口节点。如果链表无环,则返回 null。
为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。
说明:不允许修改给定的链表。
来源:力扣(LeetCode)链表中环的入口节点
在这里插入图片描述
思路:
先证明链表有环,然后再找入口节点。假如有环,那么我们一定是slow走的距离是fast走的距离的二分之一,且看下图分析
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
代码:

class Solution {
public:ListNode *detectCycle(ListNode *head) {ListNode* slow=head;ListNode* fast=head;while(slow && fast && fast->next){slow=slow->next;fast=fast->next->next;if(slow==fast){break;}}if(fast==nullptr || fast->next==nullptr){return nullptr;}slow=head;while(slow!=fast){slow=slow->next;fast=fast->next;}return fast;}
};

http://www.ppmy.cn/news/29899.html

相关文章

深度学习|改进两阶段鲁棒优化算法i-ccg

目录 1 主要内容 2 改进算法 2.1 CC&G算法的优势 2.2 i-CCG算法简介 3 结果对比 1 主要内容 自从2013年的求解两阶段鲁棒优化模型的列和约束生成算法(CC&G)被提出之后,基本没有实质性的创新,都是围绕该算法在各个领…

2023年疫情开放,国内程序员薪资涨了还是跌了?大数据告诉你答案

自从疫情开放,国内各个行业都开始有复苏的迹象,尤其是旅游行业更是空前暴涨,那么互联网行业如何? 有人说今年好找工作多了,有人说依然是内卷得一塌糊涂,那么今年开春以来,各个岗位的程序员工资…

【C语言——练习题】指针,你真的学会了吗?

✨✨✨✨如果文章对你有帮助记得点赞收藏关注哦!!✨✨✨✨ 文章目录✨✨✨✨如果文章对你有帮助记得点赞收藏关注哦!!✨✨✨✨一维数组练习题:字符数组练习题:字符指针练习题:二维数组练习题&am…

[极客大挑战 2019]EasySQL 1

[极客大挑战 2019]EasySQL 1解题POC一、解题思路之暴力破解1. 弱口令2. 暴力破解二、解题思路之万能密码1. 什么是万能密码2. 测试过程解题POC 直接点击登录获取flagflag{62f0d2ca-579e-450e-941f-5f7c23a8baf7} 一、解题思路之暴力破解 这题是万能密码,所以暴力破解…

PCL 点云高斯混合聚类(GMM)

文章目录 一、简介二、算法实现三、实现效果参考资料一、简介 与k均值使用原型向量来刻画聚类结构不同,高斯混合聚类(Mixture-of-Gaussian)采用了概率模型来表达聚类原型。从名字中就可以知晓,该方法将会结合高斯分布来进行聚类过程,该分布的概率密度函数定义如下所示: p (…

AtCoder Beginner Contest 292——A-E题讲解

蒟蒻来讲题,还望大家喜。若哪有问题,大家尽可提! Hello, 大家好哇!本初中生蒟蒻讲解一下AtCoder Beginner Contest 292这场比赛的A-E题! A题 原题 Problem Statement You are given a string SSS consisting of lo…

Java——N皇后问题

题目链接 leetcode在线oj题——N皇后 题目描述 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff…

Microsoft designer 使用教程

继各种ai绘图软件诞生之后 dell 2 playground.... 微软自己研发的重量级产品 Microsoft designer 上线了 Microsoft Designer 是微软公司推出的一款设计工具,主要用于快速创建Web和移动应用程序的原型设计。它提供了一系列的工具和模板,可以帮助用户…