[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;
    }
};
相关推荐
6Hzlia6 小时前
【Hot 100 刷题计划】 LeetCode 74. 搜索二维矩阵 | C++ 二分查找 (一维展开法)
c++·leetcode·矩阵
a里啊里啊6 小时前
常见面试题目集合
linux·数据库·c++·面试·职场和发展·操作系统
Yiyi_Coding7 小时前
一致性哈希算法
算法·哈希算法
苏纪云7 小时前
洛谷题目练习——二分+搜索+贪心+数学
算法·图论
Westward-sun.7 小时前
OpenCV物体跟踪实战:基于KCF算法的实时摄像头目标跟踪(Python实现)
opencv·算法·目标跟踪
北顾笙9807 小时前
day20-数据结构力扣
数据结构·算法·leetcode
RTC老炮7 小时前
WebRTC PCC (Performance-oriented Congestion Control) 算法精解
网络·算法·webrtc
bIo7lyA8v7 小时前
算法稳定性分析中的数值误差传播机制的技术5
算法
生信研究猿7 小时前
leetcode 121.买卖股票的最佳时机
算法·leetcode·职场和发展
CoovallyAIHub7 小时前
不需要Memory Bank:CMDR-IAD用2D+3D双分支重建做工业异常检测,MVTec 3D 97.3%
算法·架构·github