Skip to content

Commit efd6438

Browse files
authored
Update 457-circular-array-loop.js
1 parent 4fec5f0 commit efd6438

File tree

1 file changed

+29
-29
lines changed

1 file changed

+29
-29
lines changed

457-circular-array-loop.js

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,37 +3,37 @@
33
* @return {boolean}
44
*/
55
const circularArrayLoop = function(nums) {
6-
let n = nums.length;
7-
for (let i = 0; i < n; i++) {
8-
if (nums[i] == 0) {
9-
continue;
10-
}
11-
let j = i, k = getIndex(i, nums);
12-
while (nums[k] * nums[i] > 0 && nums[getIndex(k, nums)] * nums[i] > 0) {
13-
if (j === k) {
14-
// check for loop with only one element
15-
if (j === getIndex(j, nums)) {
16-
break;
17-
}
18-
return true;
19-
}
20-
j = getIndex(j, nums);
21-
k = getIndex(getIndex(k, nums), nums);
22-
}
23-
// loop not found, set all element along the way to 0
24-
j = i;
25-
let val = nums[i];
26-
while (nums[j] * val > 0) {
27-
let next = getIndex(j, nums);
28-
nums[j] = 0;
29-
j = next;
6+
let n = nums.length;
7+
for (let i = 0; i < n; i++) {
8+
if (nums[i] == 0) {
9+
continue;
10+
}
11+
let j = i,
12+
k = getNextIndex(i, nums);
13+
while (nums[k] * nums[i] > 0 && nums[getNextIndex(k, nums)] * nums[i] > 0) {
14+
if (j === k) {
15+
// check for loop with only one element
16+
if (j === getNextIndex(j, nums)) {
17+
break;
3018
}
19+
return true;
20+
}
21+
j = getNextIndex(j, nums);
22+
k = getNextIndex(getNextIndex(k, nums), nums);
23+
}
24+
// loop not found, set all element along the way to 0
25+
j = i;
26+
let val = nums[i];
27+
while (nums[j] * val > 0) {
28+
let next = getNextIndex(j, nums);
29+
nums[j] = 0;
30+
j = next;
3131
}
32-
return false;
32+
}
33+
return false;
3334
};
3435

35-
36-
function getIndex(i, nums) {
37-
const n = nums.length;
38-
return i + nums[i] >= 0? (i + nums[i]) % n: n + ((i + nums[i]) % n);
36+
function getNextIndex(i, nums) {
37+
const n = nums.length;
38+
return i + nums[i] >= 0 ? (i + nums[i]) % n : n + ((i + nums[i]) % n);
3939
}

0 commit comments

Comments
 (0)