Steward
分享是一種喜悅、更是一種幸福
程式語言 - LeetCode - C++ - 457. Circular Array Loop
參考資訊:
https://www.cnblogs.com/grandyang/p/7658128.html
題目:

解答:
class Solution {
public:
bool circularArrayLoop(vector<int>& nums) {
int n = nums.size();
vector<bool> visited(n);
for (int i = 0; i < n; ++i) {
if (visited[i]) {
continue;
}
visited[i] = true;
int cur = i;
unordered_map<int, int> mp;
while (true) {
int next = ((cur + nums[cur]) % n + n) % n;
if (next == cur || nums[next] * nums[cur] < 0) {
break;
}
if (mp.count(next)) {
return true;
}
mp[cur] = next;
cur = next;
visited[next] = true;
}
}
return false;
}
};