【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
}
相关推荐
何以解忧,唯有..3 天前
Go语言循环语句详解:for、range与循环控制
开发语言·算法·golang
踏着七彩祥云的小丑3 天前
Go学习第9天:并发编程 + 文件操作 + 正则表达式
学习·golang·正则表达式·go
想吃火锅10053 天前
【leetcode】121.买卖股票的最佳时机js/c++
算法·leetcode·职场和发展
JCGKS3 天前
Go `init` 函数:包初始化顺序到底是怎样的
golang·init·init执行顺序
何以解忧,唯有..3 天前
Go语言中的const:常量声明与iota枚举详解
java·开发语言·golang
凌波粒3 天前
LeetCode--491.递增子序列(回溯算法)
数据结构·算法·leetcode
疯狂成瘾者3 天前
Java 集合 LinkedList 详解:链表结构、常用方法和队列使用
java·开发语言·链表
退休倒计时3 天前
【每日一题】LeetCode 146. LRU 缓存 TypeScript
算法·leetcode·缓存·typescript
WL学习笔记3 天前
单项不带头不循环链表
数据结构·链表
小欣加油3 天前
leetcode3612 用特殊操作处理字符串I
数据结构·c++·算法·leetcode·职场和发展