【Golang】LeetCode 142. 环状链表 II

142. 环状链表 II

题目描述

思路

「141. 环形链表」本质上是这道题目的简化,因此我们就跳过 Hot 100 当中的这道题目,直接来将「142. 环形链表 II」。

想要找到环形链表的入口,我们需要记住一个结论,那就是当我们首先通过快慢指针找到环形链表当中的相交点时,令slow, fast := head, intersectionintersection是相交点),然后同时令它们不断地后移一个节点,最终它们相遇的位置,就是环的入口。

基于以上思路,我们来写代码解决这道题。

Golang 题解

go 复制代码
/**
 * Definition for singly-linked list.
 * type ListNode struct {
 *     Val int
 *     Next *ListNode
 * }
 */
func detectCycle(head *ListNode) *ListNode {
    slow, fast := head, head
    for fast != nil {
        slow = slow.Next
        fast = fast.Next
        if fast != nil {
            fast = fast.Next
        }
        if slow == fast {
            break
        }
    }

    fast = head
    for slow != fast && slow != nil {
        slow, fast = slow.Next, fast.Next
    }

    return slow
}
相关推荐
GDAL1 小时前
BoltDB vs SQLite:极简高并发、低配置场景下的终极对比
golang·sqlite·boltdb
ruxingli3 小时前
GoLang的并发如何避免死锁
开发语言·后端·golang
篮l球场3 小时前
数组中的第K个最大元素
数据结构·算法·leetcode
暴躁小师兄数据学院3 小时前
【WEB3.0零基础转行笔记】go编程篇-第12讲:go-zero入门实战
开发语言·笔记·golang·web3·区块链
念何架构之路4 小时前
Go语言表达式的求值顺序
开发语言·后端·golang
篮l球场4 小时前
前 K 个高频元素
数据结构·算法·leetcode
历程里程碑4 小时前
Proto3 三大高级类型:Any、Oneof、Map 灵活解决复杂业务场景
java·大数据·开发语言·数据结构·elasticsearch·链表·搜索引擎
深邃-6 小时前
数据结构-双向链表
c语言·开发语言·数据结构·c++·算法·链表·html5
_深海凉_6 小时前
LeetCode热题100-两数之和
算法·leetcode·职场和发展
阿Y加油吧7 小时前
面试硬核双杀!合并 K 个升序链表 + LRU 缓存|力扣高频手撕原题全解
数据结构·leetcode·链表