【 腾讯精选练习 50 题】18—环形链表【简单】

简介: 【 腾讯精选练习 50 题】18—环形链表【简单】

题目链接

141. 环形链表【简单】

题目简介

给定一个链表,判断链表中是否有环。

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。

如果链表中存在环,则返回 true 。 否则,返回 false

题目解析

  1. 很典型的一道题目,使用 快慢指针 解决
  2. 假设该链表有环
  • 慢指针一次走一步,快指针一次走两步
  • 因为每一次 快指针 都比 慢指针 多走一步
  • 以慢指针为参考系,那么有环的情况下,快慢指针必会相遇
  1. 假设该链表无环
  • 我们可以通过 快指针 是否为空值来判断其是否无环

题目代码

public class Solution {
    public boolean hasCycle(ListNode head) {
        if(head == null){
            return false;
        }
        ListNode low = head;
        ListNode quick = head;
        while(true){
            if(quick.next == null || quick.next.next == null){
                return false;
            }
            low = low.next;
            quick = quick.next.next;
            if(low == quick){
                return true;
            }
        }
    }
}


相关文章
|
2月前
|
存储 C语言 索引
环形链表、环形链表 II、有效的括号​​​​​​​【LeetCode刷题日志】
环形链表、环形链表 II、有效的括号​​​​​​​【LeetCode刷题日志】
|
3月前
|
索引
【每日一题】5.LeetCode——环形链表
【每日一题】5.LeetCode——环形链表
|
4月前
|
C++ Python Java
Java每日一练(20230501) 路径交叉、环形链表、被围绕的区域
Java每日一练(20230501) 路径交叉、环形链表、被围绕的区域
38 0
Java每日一练(20230501) 路径交叉、环形链表、被围绕的区域
|
26天前
|
索引
【力扣】142. 环形链表 II
【力扣】142. 环形链表 II
|
26天前
|
C语言 C++ 索引
【力扣】141. 环形链表、160. 相交链表、206.反转链表、234. 回文链表
【力扣】141. 环形链表、160. 相交链表、206.反转链表、234. 回文链表
|
1月前
|
算法 C语言 索引
环形链表(快慢指针)
环形链表(快慢指针)
|
2月前
|
算法 索引
LeetCode刷题---142. 环形链表 II(双指针-快慢指针)
LeetCode刷题---142. 环形链表 II(双指针-快慢指针)
|
2月前
|
算法 索引
LeetCode刷题---141. 环形链表(双指针-快慢指针)
LeetCode刷题---141. 环形链表(双指针-快慢指针)
|
2月前
|
算法 Java 索引
[Java·算法·简单] LeetCode 141. 环形链表 详细解读
[Java·算法·简单] LeetCode 141. 环形链表 详细解读
26 0
|
2月前
|
存储 算法
【数据结构与算法】【腾讯阿里链表面试题】算法题--链表易懂版讲解
【数据结构与算法】【腾讯阿里链表面试题】算法题--链表易懂版讲解