day14 leetcode-hot100-25(链表4)

141. 环形链表 - 力扣(LeetCode)

1.哈希集合

思路

将节点一个一个加入HashSet,并用contains判断是否存在之前有存储过的节点,如果有便是环,如果没有便不是环。

具体代码
java 复制代码
/**
 * Definition for singly-linked list.
 * class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public boolean hasCycle(ListNode head) {
        HashSet<ListNode> set = new HashSet<>();
        ListNode p = head;
        while(p!=null){
            if(set.contains(p)){
                return true;
            }
            set.add(p);
            p=p.next;
        }
        return false;
        
    }
}

2.快慢指针

优化空间复杂度为O(1)

思路

一个慢指针每次走1格,一个快指针每次走2格,如果存在环肯定会相遇,如果不存在,最后都为null.

具体代码
java 复制代码
/**
 * Definition for singly-linked list.
 * class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public boolean hasCycle(ListNode head) {
        if(head == null){
            return false;
        }
        ListNode slow = head;
        ListNode fast = head.next;
        while(slow != null && fast != null){
            if(slow==fast){
                return true;
            }
            
            slow=slow.next;
            if(fast.next!=null){
                fast = fast.next.next;
            }
            else{
                return false;
            }
            
        }
        return false;
    }
}
相关推荐
无小道18 分钟前
算法——暴力+优化
算法·优化·暴力
Free Tester22 分钟前
如何判断 LeakCanary 报告的严重程度
java·jvm·算法
zyq99101_11 小时前
DFS算法实战:经典例题代码解析
python·算法·蓝桥杯·深度优先
智者知已应修善业1 小时前
【51单片机单按键切换广告屏】2023-5-17
c++·经验分享·笔记·算法·51单片机
广州灵眸科技有限公司1 小时前
为RK3588注入澎湃算力:RK1820 AI加速卡完整适配与评测指南
linux·网络·人工智能·物联网·算法
qinian_ztc1 小时前
frida 14.2.18 安装报错解决
算法·leetcode·职场和发展
AI应用实战 | RE1 小时前
012、检索器(Retrievers)核心:从向量库中智能查找信息
人工智能·算法·机器学习·langchain
凤年徐1 小时前
C++手撕红黑树:从0到200行,拿下STL map底层核心
c++·后端·算法
Thomas.Sir1 小时前
AI 医疗之罕见病/疑难病辅助诊断系统从算法到实现【表型驱动与知识图谱推理】
人工智能·算法·ai·知识图谱
tankeven2 小时前
动态规划专题(03):区间动态规划从原理到实践(未完待续)
c++·算法·动态规划