[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;
    }
};
相关推荐
2401_8772742419 小时前
2025数据结构实验八:排序
数据结构·算法·排序算法
J2虾虾19 小时前
空间矢量数据结构及其表达
算法
Neil今天也要学习19 小时前
永磁同步电机无速度算法--永磁同步电机转子位置精确估计的误差抑制方法
算法
Irene199119 小时前
JavaScript 常见算法复杂度总结(大O表示法)
javascript·算法
开心比对错重要19 小时前
进程、线程、虚拟线程详解及线程个数设置
java·jvm·算法·面试
爱学大树锯20 小时前
【594 · 字符串查找 II】
java·开发语言·算法
m0_6924571020 小时前
图像噪点消除
人工智能·算法
2401_8414956420 小时前
【Python高级编程】图着色动态可视化 APP
python·算法·matplotlib·tkinter·回溯法·图着色算法·动态可视化工具
youngee1120 小时前
hot100-53搜索旋转排序数组
数据结构·算法·leetcode
烟雨梵兮20 小时前
-刷题小结19
算法