leetcode链表是否有环

leetcode链表是否有环

题目链接:![https://leetcode.cn/problems/linked-list-cycle/description/\]

解题思路

使用快慢指针法解决。定义两个指针,慢指针一次走一个节点,快指针一次走两个节点,这样就把链表是否有环转换为了追及相遇问题。如果链表有环,慢指针一定会被快指针"套圈"。如果链表没环,那么快指针一定先到表尾。

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 == nullptr || head->next == nullptr)
            return false;

        ListNode* fast = head;
        ListNode* slow = head;

        while (slow->next != nullptr && fast->next != nullptr) {
            fast = fast->next->next;
            slow = slow->next;

            if (fast == nullptr || fast->next == nullptr)
                return false;
            if (fast == slow)
                return true;
        }

        return false;
    }
};
相关推荐
jay神9 小时前
基于YOLOv8的钢材表面缺陷检测系统
人工智能·算法·yolo·目标检测·计算机视觉
Accerlator9 小时前
2026年3月21日刷题
算法
2401_891655819 小时前
此电脑网络位置异常的AD域排错指南的技术文章大纲
开发语言·python·算法
DLGXY9 小时前
STM32(二十七)——独立看门狗&窗口看门狗
stm32·嵌入式硬件·算法
不要秃头的小孩10 小时前
50. 随机数排序
数据结构·python·算法
tankeven10 小时前
HJ139 小红的01子序列计数(hard)
c++·算法
weixin_6495556710 小时前
C语言程序设计第四版(何钦铭、颜晖)第十章函数与程序设计之汉诺塔问题
c语言·c++·算法
C羊驼10 小时前
C语言:随机数
c语言·开发语言·经验分享·笔记·算法
xushichao198910 小时前
实时数据压缩库
开发语言·c++·算法
minji...10 小时前
Linux 文件系统 (三) 软连接和硬链接
linux·运维·服务器·c++·算法