Leetcode 141. 环形链表
141. 环形链表 - 力扣(LeetCode) (leetcode-cn.com)
思路 1 快慢指针:
1. 设置两个指针,一个一次走一步,一个一次走两步。
2. 如果这个链表有环,那么快指针就一定会在某一个节点从后面追上慢指针。
3. 如果快指针可以指向nil, 那么这个链表就不是一个环形链表。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | /** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func hasCycle(head *ListNode) bool { if head == nil || head.Next == nil { return false } slow := head fast := head.Next for fast != nil && fast.Next != nil { fast = fast.Next.Next slow = slow.Next if fast == slow { return true } } return false } |
思路 2 哈希表法
1. 对链表进行遍历。
2. 每遍历一个链表节点就将它存到哈希表中。
3.如果在插入哈希表时发现这个节点已经存在,则说明这个链表有环。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | /** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */ func hasCycle(head *ListNode) bool { hashMap := make( map [*ListNode]int) for head != nil { if _, ok := hashMap[head]; ok { return true } hashMap[head]=0 head = head.Next } return false } |
__EOF__

本文作者:SoutherLea
本文链接:https://www.cnblogs.com/lizhengnan/p/16185563.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/lizhengnan/p/16185563.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~