golang中怎么利用leetcode实现一个环形链表
发表于:2025-01-25 作者:千家信息网编辑
千家信息网最后更新 2025年01月25日,golang中怎么利用leetcode实现一个环形链表,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。给定一个链表,返回链
千家信息网最后更新 2025年01月25日golang中怎么利用leetcode实现一个环形链表
golang中怎么利用leetcode实现一个环形链表,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null
。
为了表示给定链表中的环,我们使用整数 pos
来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos
是 -1
,则在该链表中没有环。
说明:不允许修改给定的链表。
示例 1:
输入:head = [3,2,0,-4], pos = 1
输出:tail connects to node index 1
解释:链表中有一个环,其尾部连接到第二个节点。
示例 2:
输入:head = [1,2], pos = 0
输出:tail connects to node index 0
解释:链表中有一个环,其尾部连接到第一个节点。
示例 3:
输入:head = [1], pos = -1
输出:no cycle
解释:链表中没有环。
解题思路:
1,首先用快慢指针判断是否有环
2,假设快慢指针相遇的位置为环起点m后第p个位置,环剩余q个位置
则:
A,m+p=2*(m+p)-k*(p+q) k为整数,跟m长度与环大小比有关
B,假设k=1 则,m=q
C,m=k*(p+q)-p=(k-1)*(p+q)+q
3,由此可知,如果慢指针从相遇位置开始,新指针从头开始,则相遇位置一定为环起点
/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func detectCycle(head *ListNode) *ListNode { fast:=head slow:=head flag:=false for fast!=nil && fast.Next!=nil{ fast=fast.Next.Next slow=slow.Next if fast!=nil && slow==fast{ flag=true break } } if !flag{ return nil } fast=head for fast!=slow{ fast=fast.Next slow=slow.Next } return fast}
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
位置
指针
示例
节点
解释
输入
输出
个位
尾部
快慢
整数
起点
帮助
环形
清楚
由此可知
从头
内容
大小
对此
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
便宜的高防服务器
智能互联网络技术应用专业
小学生网络安全标语短句
河南新华电脑学院网络技术
大话2怎么退出选择服务器
监控室网络安全设置
软件开发项目管理流程模板
淄博管理库存软件开发公司
中兴通讯无线网络技术工程师
网络技术三级考试试题分数
网信办网络安全工作计划
网络安全计算机设计
东莞软件开发驻场靠谱吗
查询最新分区里的数据库
普陀区营销软件开发程序
创建一个数据库命名为青春纪念册
战地五服务器怎么管理
我的世界电脑版起床战争服务器
中兴数据南京软件开发二部
诸城关文网络技术有限公司
统计年鉴是原始数据库
服务器公网是系统IP吗
数据库结果集查询出现问题
服务器启动提示键盘错误
数据库设计培训多少钱
金融服务器哪个国家好
国家知识产权专利网数据库
男孩学网络技术
2k20服务器保留多久
360家庭网络安全管理员