[leetcode]circular-array-loop 环形数组是否存在循环

. - 力扣(LeetCode)

复制代码
class Solution {
public:
    bool circularArrayLoop(vector<int>& nums) {
        int n = nums.size();
        auto next = [&](int cur) {
            return ((cur + nums[cur]) % n + n) % n; // 保证返回值在 [0,n) 中
        };

        for (int i = 0; i < n; i++) {
            if (!nums[i]) {
                continue;
            }
            int slow = i, fast = next(i);
            // 判断非零且方向相同
            while (nums[slow] * nums[fast] > 0 && nums[slow] * nums[next(fast)] > 0) {
                if (slow == fast) {
                    if (slow != next(slow)) {
                        return true;
                    } else {
                        break;
                    }
                }
                slow = next(slow);
                fast = next(next(fast));
            }
            int add = i;
            while (nums[add] * nums[next(add)] > 0) {
                int tmp = add;
                add = next(add);
                nums[tmp] = 0;
            }
        }
        return false;
    }
};
相关推荐
滴滴答滴答答15 分钟前
LeetCode Hot100 之 17 有效的括号
算法·leetcode·职场和发展
掘根19 分钟前
【C++STL】二叉搜索树(BST)
数据结构·c++·算法
老鼠只爱大米28 分钟前
LeetCode经典算法面试题 #20:有效的括号(数组模拟法、递归消除法等五种实现方案详细解析)
算法·leetcode··括号匹配·数组模拟法·递归消除法
yxc_inspire29 分钟前
2026年寒假牛客训练赛补题(五)
算法
不想看见40431 分钟前
6.3Permutations -- 回溯法--力扣101算法题解笔记
笔记·算法·leetcode
诗词在线40 分钟前
孟浩然诗作数字化深度实战:诗词在线的意象挖掘、检索优化与多场景部署
大数据·人工智能·算法
芜湖xin44 分钟前
【题解-Acwing】113. 特殊排序
算法·插入排序·二分
代码栈上的思考2 小时前
双指针法:从三道经典题看双指针的核心思想
数据结构·算法
J-TS2 小时前
线性自抗扰控制LADRC
c语言·人工智能·stm32·单片机·算法
Ivanqhz3 小时前
半格与数据流分析的五个要素(D、V、F、I、Λ)
开发语言·c++·后端·算法·rust