457.环形数组循环
给定一组含有正整数和负整数的数组。如果某个索引中的 n 是正数的,则向前移动 n 个索引。相反,如果是负数(-n),则向后移动 n 个索引。
假设数组首尾相接。判断数组中是否有环。环中至少包含 2 个元素。环中的元素一律“向前”或者一律“向后”。
示例 1:给定数组 [2, -1, 1, 2, 2], 有一个循环,从索引 0 -> 2 -> 3 -> 0。
示例 2:给定数组[-1, 2], 没有循环。
注意:给定数组保证不包含元素"0"。
你能写出时间复杂度为 O(n) 且空间复杂度为 O(1) 的算法吗?
class Solution {
public:
bool circularArrayLoop(vector<int>& nums) {
unordered_map<int, int> m;
int n = nums.size();
vector<bool> visited(n, false);
for (int i = 0; i < n; ++i) {
if (visited[i]) continue;
int cur = i;
while (true) {
visited[cur] = true;
int next = (cur + nums[cur]) % n;
if (next < 0) next += n;
if (next == cur || nums[next] * nums[cur] < 0) break;
if (m.count(next)) return true;
m[cur] = next;
cur = next;
}
}
return false;
}
};
457.环形数组循环相关推荐
- Java实现 LeetCode 457 环形数组循环
457. 环形数组循环 给定一个含有正整数和负整数的环形数组 nums. 如果某个索引中的数 k 为正数,则向前移动 k 个索引.相反,如果是负数 (-k),则向后移动 k 个索引.因为数组是环形的, ...
- LeetCode 457. 环形数组循环(暴力+快慢指针)
文章目录 1. 题目 2. 解题 2.1 暴力解题 2.2 快慢指针 1. 题目 给定一个含有正整数和负整数的环形数组 nums. 如果某个索引中的数 k 为正数,则向前移动 k 个索引.相反,如果是 ...
- leetcode457. 环形数组循环
给定一个含有正整数和负整数的环形数组 nums. 如果某个索引中的数 k 为正数,则向前移动 k 个索引.相反,如果是负数 (-k),则向后移动 k 个索引.因为数组是环形的,所以可以假设最后一个元素 ...
- [算法] 求环形数组中和值最大子段
对于非环形数组,求解和值最大子段的方法见之前一遍文章: 对于环形数组,需要考虑最大和值子段越过首尾边界的情况,解决方法比较简单,即将数组处理两遍: 需要注意子段长度不可以超过整个数组长度: 1 #! ...
- 环形数组最大子数组之和
题目:返回一个整数数组中最大子数组的和. 要求: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 如果数组A[0]--A[j-1]首尾相邻, ...
- 无锁数据结构--理解CAS、ABA、环形数组
在分布式系统中经常会使用到共享内存,然后多个进程并行读写同一块共享内存,这样就会造成并发冲突的问题, 一般的常规做法是加锁,但是锁对性能的影响非常大. 无锁队列是一个非常经典的并行计算数据结构,它极大 ...
- 数组索引必须为正整数或逻辑值_LeeCode457-环形数组循环
今天有些偷懒了 一天就做了两道算法题 英语没看 专业知识没复习 可能就得从上午的那篇论文被拒开始的吧 题目描述: 给定一个含有正整数和负整数的环形数组 nums. 如果某个索引中的数 k 为正数,则向 ...
- 环形数组求最大子数组之和
环形数组求最大子数组之和: 实验要求: 随机产生一个整形数组,假设首尾相连为环形,求其相连的字数组的和,并输出子数组的元素. 设计思路: 因为是环形,所以要考虑自设的头尾的情况,在此分为两大类考虑,一 ...
- 《团队项目开发之三对一维环形数组的求解》
<团队项目开发之三对一维环形数组的求解> 设计思想:通过把数组的长度扩大为原来的一倍,相当于新数组是由对原来的数组重复了一遍后而组成的,这样保证了数组以环状的形式,按照数组中每个数字的位序 ...
- vue 循环遍历list_vue使用map代替Aarry数组循环遍历的方法
需求:根据主键id来找到对应的数组下标 原本的方法是使用for循环遍历该数组,变量 i 就是下标,问题在于,如果有多重for循环,就会导致性能大大下降,数据也容易出错 因此使用map,让数组(原本是l ...
最新文章
- 【ACM】杭电OJ 1002
- [android] 异步http框架与实现原理
- MIT与TI研究人员已打造出新型防黑RFID芯片
- BZOJ4314 倍数?倍数!
- ❤JavaScript系列6部曲:语法篇(万字长文)❤
- IOS UIImage
- VSCode + PYQT5 + QtDesigner
- 毕业五年同是程序员为什么差距这么大?他年薪百万,他月薪一万
- 联想机房同传日记——2014/09/17
- 222Beta多样性限制性排序CPCoA/CCA/RDA/LDA
- VS无法定位程序输入点于动态链接库
- 计算机怎么盲打键盘,如何练习盲打 键盘盲打指法练习技巧-电脑教程
- 微信服务升级——指尖上的超级表格
- 西南交通大学linux内核,GitHub - Laotree/SWJTU-Developer: 西南交通大学开发者社区——为交大开发者提供交流的平台...
- vo bo po dao pojo dto
- CDbCriteria CArrayDataProvider zii.widgets.grid (1)
- java 上传图片 / 文件添加水印(png/jpg/pdf)
- Python3 迁移怨声载道
- 计算机毕业设计Java醋坊定制销售平台(源码+系统+mysql数据库+lw文档)
- sql 除法计算一直 为0原因及解决方案