当前位置: 首页 > article >正文

C++ | Leetcode C++题解之第457题环形数组是否存在循环

题目:

题解:

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;
    }
};

http://www.kler.cn/news/334274.html

相关文章:

  • mysql学习教程,从入门到精通,SQL 创建索引(CREATE INDEX 语句)(35)
  • 【高等数学学习记录】函数的极限
  • 深度学习中的结构化概率模型 - 结构化概率模型的深度学习方法篇
  • python 卸载、安装、virtualenv
  • Python爬虫使用实例-mdrama
  • html+css+js实现轮播图
  • git diff 查看到一行变动,但是目测无差异怎么办?
  • Spring cloud 中gateway原理
  • 量子计算:下一次科技革命的引擎
  • 软质电源探秘:电鳗启发、人工构建及性能改进
  • Microsoft AI部门的CEO额备忘录
  • 基于工业物联网的能源监控系统:边缘数据处理的应用
  • python:reportlab 将多个图片合并成一个PDF文件
  • 【优选算法】(第二十二篇)
  • Studying-多线程学习Part1-线程库的基本使用、线程函数中的数据未定义错误、互斥量解决多线程数据共享问题
  • 速成java记录(上)
  • 分析JS Crash(进程崩溃)
  • 算法闭关修炼百题计划(二)
  • 深度学习基础—卷积神经网络示例
  • 如何使用 Django 框架进行用户认证的详细指南,涵盖用户注册和登录功能的实现。