【腾讯】环形链表(证明有环)

简介: 【腾讯】环形链表(证明有环)

1. 题目描述

题目链接:环形链表

2. 题目解析

  1. 对于这种问题,最好的做法是~~~~做过一遍~ _ ~
  2. 简单来说,定义两个指针,一个快指针,一个慢指针,如果他们能够相遇的话,就代表该链表有环,否则如果快指针走到了null,则证明无环。
  3. 这里说明下关于有环的证明:我们的快指针走2步,慢指针走1步,快指针会先在环里进行循环走,等到慢指针也走进环里时。根据速度的相对,如果以满指针为参考系的话,快指针一次走一步,迟早会追上慢指针。

3. 题目代码

public class Solution {
    public boolean hasCycle(ListNode head) {
       if(head == null){
           return false;
       }
       ListNode p1 = head;
       ListNode p2 = head;
       while(p2.next != null && p2.next.next != null){
           p1 = p1.next;
           p2 = p2.next.next;
           if(p1 == p2){
               return true;
           }
       }
       return false;
    }
}


相关文章
|
6月前
|
Java
环形数组链表(java)
环形数组链表(java)
|
2月前
【数据结构】环形、相交、回文、分割、合并、反转链表
【数据结构】环形、相交、回文、分割、合并、反转链表
29 0
|
5月前
【数据结构OJ题】环形链表
力扣题目——环形链表
41 3
【数据结构OJ题】环形链表
|
5月前
【数据结构OJ题】环形链表II
力扣题目——环形链表II
35 1
【数据结构OJ题】环形链表II
|
6月前
|
存储 算法 Java
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
64 2
|
5月前
|
Java 索引
力扣经典150题第五十六题:环形链表
力扣经典150题第五十六题:环形链表
36 0
|
7月前
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点.
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点
57 1
|
7月前
|
存储 算法 索引
【力扣刷题】只出现一次的数字、多数元素、环形链表 II、两数相加
【力扣刷题】只出现一次的数字、多数元素、环形链表 II、两数相加
55 1
|
6月前
|
算法
【数据结构与算法 刷题系列】判断链表是否有环(图文详解)
【数据结构与算法 刷题系列】判断链表是否有环(图文详解)
|
6月前
|
Java
单向环形链表-约瑟夫问题(java)
单向环形链表-约瑟夫问题(java)