forked from AnasImloul/Leetcode-Solutions
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCircular Array Loop.cpp
42 lines (42 loc) · 1.22 KB
/
Circular Array Loop.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
class Solution {
public:
bool circularArrayLoop(vector<int>& nums) {
unordered_set<int>us;
for(int i{0};i<nums.size() && us.find(i)==us.end();i++){
unordered_map<int,int>um;
int index=0;
int j=i;
um[i];
bool flag1=0,flag2=0;
while(true){
if(nums.at(i)<0){
index=(nums.size()+nums.at(j)+j)%nums.size();
flag1=1;
}else{
index=(nums.at(j)+j)%nums.size();
flag2=1;
}
if(nums.at(index)>0 && flag1==1){
break;
}else if(nums.at(index)<0 && flag2==1){
break;
}
if(um.find(index)==um.end()){
um[index];
us.insert(index);
}else{
if(j==index){
break;
}
if(um.size()>1){
return true;
}else{
break;
}
}
j=index;
}
}
return false;
}
};