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

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

题目:

题解:

func circularArrayLoop(nums []int) bool {
    n := len(nums)
    next := func(cur int) int {
        return ((cur+nums[cur])%n + n) % n // 保证返回值在 [0,n) 中
    }

    for i, num := range nums {
        if num == 0 {
            continue
        }
        slow, fast := i, next(i)
        // 判断非零且方向相同
        for nums[slow]*nums[fast] > 0 && nums[slow]*nums[next(fast)] > 0 {
            if slow == fast {
                if slow == next(slow) {
                    break
                }
                return true
            }
            slow = next(slow)
            fast = next(next(fast))
        }
        add := i
        for nums[add]*nums[next(add)] > 0 {
            tmp := add
            add = next(add)
            nums[tmp] = 0
        }
    }
    return false
}

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

相关文章:

  • GPG error golang 1.19
  • 【中间件学习】Git的命令和企业级开发
  • YOLO11改进|注意力机制篇|引入并行分块注意力机制PPA
  • 掌握RocketMQ4.X消息中间件(一)-RocketMQ基本概念与系统架构
  • 深度探索Kali Linux的精髓与实践应用
  • 关键字:sizeof
  • 知识图谱入门——3:工具分类与对比(知识建模工具:Protégé、 知识抽取工具:DeepDive、知识存储工具:Neo4j)
  • 安卓WPS Office v18.13.0高级版
  • 28 基于51单片机的两路电压检测(ADC0808)
  • 双11买什么东西比较好?买什么?这份双十一好物清单请查收
  • 【微服务】服务注册与发现、分布式配置管理 - Consul(day5)
  • ElasticSearch备考 -- Search across cluster
  • 【架构】efk日志监控
  • 《浔川社团官方宣布 ——10 月 8 日上线浔川 AI 翻译 v4.0》
  • C++——用类实现输入和输出时间。要求:(1)私有数据成员包括时、分、秒。(2)输入输出功能改为由成员函数实现。(3)在类体内定义成员函数。
  • java计算机毕设课设—坦克大战游戏
  • AI学习指南深度学习篇-学习率衰减的实现机制
  • [241006] Cerebras 挑战英伟达霸主地位,AI 芯片市场再掀波澜!| EndeavourOS Neo 五周年更新版发布
  • mysql设置表的某一个字段每天定时清零
  • 力扣 简单 110.平衡二叉树