Leetcode:141. 环形链表

Leetcode:141. 环形链表

题目描述

给定一个链表,判断链表中是否有环。
为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

示例 1:

输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点。

示例 2:

输入:head = [1,2], pos = 0
输出:true
解释:链表中有一个环,其尾部连接到第一个节点。

示例 3:

输入:head = [1], pos = -1
输出:false
解释:链表中没有环。

进阶:

你能用 O(1)(即,常量)内存解决此问题吗?

思路

思路1

快慢指针,使用快慢指针遍历链表看是否会有相交

代码

代码1

public class Solution {
    public boolean hasCycle(ListNode head) {
        if (head == null || head.next == null){
            return false;
        }
        
        ListNode fast = head;
        ListNode slow = head;
        
        do{
            slow = slow.next;
            fast = fast.next != null ? fast.next.next : null;
        }
        while (fast != null && slow != null && (fast != slow));
        if (fast == slow && fast != null){
            return true;
        }else{
            return false;
        }
    }
}

复杂度分析

思路1时间复杂度

$O(n)$

思路1空间复杂度

$O(1)$


文章作者: 小风雷
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小风雷 !
评论
 上一篇
Leetcode:148. 排序链表 Leetcode:148. 排序链表
#Leetcode: 141.排序链表 题目描述在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序。 示例 1:输入: 4->2->1->3 输出: 1->2->3->4 示例
2020-04-06
下一篇 
Leetcode:138. 复制带随机指针的链表 Leetcode:138. 复制带随机指针的链表
Leetcode:138. 复制带随机指针的链表题目描述给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。 要求返回这个链表的 深拷贝。  我们用一个由 n 个节点组成的链表来表示输入/输出中的链
2020-04-06 小风雷
  目录