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;
    }
};
相关推荐
xlq223222 小时前
29.哈希(下)
算法·哈希算法·散列表
yaoh.wang2 小时前
力扣(LeetCode) 83: 删除排序链表中的重复元素 - 解法思路
程序人生·算法·leetcode·链表·面试·职场和发展
阿昭L2 小时前
leetcode旋转链表
算法·leetcode·链表
山楂树の2 小时前
有效的括号(栈)
数据结构·算法
im_AMBER2 小时前
Leetcode 81 【滑动窗口(定长)】
数据结构·笔记·学习·算法·leetcode
xu_yule2 小时前
算法基础(背包问题)-完全背包
c++·算法·动态规划·完全背包
x976662 小时前
使用 HMAC-SHA256算法对MCU UID进行加密
单片机·嵌入式硬件·算法
gfdhy2 小时前
【c++】素数详解:概念、定义及高效实现(判断方法 + 筛法)
开发语言·c++·算法·数学建模·ai编程
Swift社区2 小时前
LeetCode 452 - 用最少数量的箭引爆气球
算法·leetcode·职场和发展