【 腾讯精选练习 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;
            }
        }
    }
}


相关文章
|
6月前
|
Java
环形数组链表(java)
环形数组链表(java)
|
2月前
【数据结构】环形、相交、回文、分割、合并、反转链表
【数据结构】环形、相交、回文、分割、合并、反转链表
30 0
|
5月前
【数据结构OJ题】环形链表
力扣题目——环形链表
43 3
【数据结构OJ题】环形链表
|
5月前
【数据结构OJ题】环形链表II
力扣题目——环形链表II
37 1
【数据结构OJ题】环形链表II
|
6月前
|
存储 人工智能 测试技术
每日练习之排序——链表的合并;完全背包—— 兑换零钱
每日练习之排序——链表的合并;完全背包—— 兑换零钱
39 2
|
6月前
|
存储 算法 Java
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
65 2
|
6月前
|
存储
2.顺序表_链表(附练习)
2.顺序表_链表(附练习)
|
5月前
|
Java 索引
力扣经典150题第五十六题:环形链表
力扣经典150题第五十六题:环形链表
36 0
|
7月前
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点.
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点
62 1
|
7月前
|
存储 算法 索引
【力扣刷题】只出现一次的数字、多数元素、环形链表 II、两数相加
【力扣刷题】只出现一次的数字、多数元素、环形链表 II、两数相加
57 1