Leetcode 141. 环形链表

给你一个链表的头节点 head ,判断链表中是否有环。

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

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

示例 1:

输入:head = [3,2,0,-4], pos = 1

输出:true

解释:链表中有一个环,其尾部连接到第二个节点。

示例 2:

输入:head = [1,2], pos = 0

输出:true

解释:链表中有一个环,其尾部连接到第一个节点。

示例 3:

输入:head = [1], pos = -1

输出:false

解释:链表中没有环。

提示:

链表中节点的数目范围是 [0, 104]

-105 <= Node.val <= 105

pos 为 -1 或者链表中的一个 有效索引 。

cpp 复制代码
/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    bool hasCycle(ListNode *head) {
        if(!head || !head->next) return false;
        auto fast = head->next, slow = head;
        while(fast) {
            slow = slow->next, fast = fast->next;
            if(!fast) return false;
            fast = fast->next;
            if(slow == fast) return true; 
        }
        return false;
    }
};
相关推荐
m0_743470371 分钟前
C++代码静态检测
开发语言·c++·算法
m0_738098022 分钟前
C++中的代理模式实战
开发语言·c++·算法
The_Ticker4 分钟前
日股实时行情接口使用指南
java·经验分享·笔记·python·算法·区块链
靠沿6 分钟前
【递归、搜索与回溯算法】专题一——递归
算法
凌波粒6 分钟前
LeetCode--24.两两交换链表中的节点(链表)
java·算法·leetcode·链表
猫咪老师7 分钟前
RAG与GraphRAG介绍
人工智能·算法·llm
qwehjk200816 分钟前
实时语音处理库
开发语言·c++·算法
2301_8042154119 分钟前
自定义异常类设计
开发语言·c++·算法
暮冬-  Gentle°21 分钟前
C++代码依赖分析
开发语言·c++·算法
2301_7638919523 分钟前
泛型编程与STL设计思想
开发语言·c++·算法