当前位置:网站首页>力扣142题:环形链表2
力扣142题:环形链表2
2022-07-23 08:05:00 【瀛台夜雪】
力扣142题:环形链表2
题目描述
给你一个链表的头节点 head ,判断链表中是否有环。
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。
如果链表中存在环 ,则返回 true 。 否则,返回 false 。
输入输出样例

输入:head = [3,2,0,-4], pos = 1
输出:返回索引为 1 的链表节点
解释:链表中有一个环,其尾部连接到第二个节点。

输入:head = [1,2], pos = 0
输出:返回索引为 0 的链表节点
解释:链表中有一个环,其尾部连接到第一个节点。

输入:head = [1], pos = -1
输出:返回 null
解释:链表中没有环。
解法一:使用hash表存储,空间复杂度为O(n)
//使用hash表来建立结点之间的遍历关系
ListNode *detectCycle(ListNode *head)
{
unordered_set<ListNode *>sets;
while(head!=nullptr)
{
if(sets.count(head))
{
return head;
}
else{
sets.insert(head);
head=head->next;
}
}
return nullptr;
}
解法二,使用快慢指针的思想空间复杂度为O(n)
//使用快慢指针的思想进行完成
//慢指针走过的结点: 环外 a ,环内位移b, 环内剩余位移c, 总移动圈数n 总移动结点 a+n(b+c)+b
//快指针走过的结点: 快指针速度是慢指针速度的两倍 ,但结点数相同 (a+b)*2=(a+n(b+c)+b)
//a+b=n(b+c) a=(n-1)b+nc a=(n-1)(b+c) +c
//以n=1为值
// a=c
ListNode *detectCycle(ListNode *head)
{
ListNode *fast=head;
ListNode *slow=head;
while(fast!=nullptr &&fast->next!=nullptr)
{
slow=slow->next;
fast=fast->next->next;
if(slow==fast)
{
ListNode *index1=fast;
ListNode *index2=head;
//a=c
//n=1,只超1圈
while(index1!=index2)
{
index1=index1->next;
index2=index2->next;
}
//返回路口
return index2;
}
}
return nullptr;
}
边栏推荐
- 单调栈!!!
- rtx3070ti显卡什么水平 rtx3070ti显卡什么级别 rtx3070ti显卡怎么样
- AppScan的安装与使用
- JS中不同的循环方式和注意事项总结
- How about the performance of Ruilong R7 Pro 5875u? What level is it equivalent to
- 完全背包!
- Notes on the fourth day
- How many processors is Tianji 1100 equivalent to snapdragon? How about Tianji 1100 equivalent to snapdragon
- 求岛屿最大面积--深度优先搜索(染色法)
- 赛扬N4000和赛扬N5095的区别
猜你喜欢

mysql开启定时调度任务执行

Day 11 notes

Remember that a vulnhub target plane exercise successfully won the root permission

rtx3080相当于gtx什么显卡 rtx3080显卡什么水平 rtx3080显卡怎么样

Is there a big gap between core i5 12490f and i5 12600K

MySQL enables scheduled task execution

iQOO 10 Pro和小米12 Ultra哪个好 哪个值得买 两者配置对比

rtx3090ti什么水平 rtx3090ti显卡什么级别 rtx3090ti显卡怎么样

鸡与蛋,产品与策略

剑指offer19 正则表达式
随机推荐
赛扬n5095处理器怎么样 英特尔n5095核显相当于什么水平
小米12S Pro和小米12Pro天玑版区别 两者配置对比
Day 12 notes
英特尔赛扬7300性能怎么样?相当于什么水平级别
rtx3080ti和rtx3080差距 3080和3080ti参数对比
求岛屿最大面积--深度优先搜索(染色法)
Spark统计每天新增用户
The difference between Celeron n4000 and Celeron n5095
Le shell a besoin de connaître les commandes
How about the performance of Intel Celeron 7300? What level is it equivalent to
js 实现随机生成UUID
剑指offer19 正则表达式
What level is the Core i7 1165g7 equivalent to? What grade does the i71165g7 belong to
Notes on animal farm
What level is the notebook core i5 1135g7 equivalent to? How about i5 1135g7 performance
数据库连接池 & DBUtils
网络安全笔记1——Internet协议的安全性
太平洋大西洋水流问题
rtx3090ti什么水平 rtx3090ti显卡什么级别 rtx3090ti显卡怎么样
JS to implement encode64 encryption