1
var spiralMatrixIII = function (rows, cols, rStart, cStart) {
2
let output = [];
3
let r = rStart,
4
c = cStart;
5
let right = true,
6
down = false,
7
left = false,
8
up = false;
9
let steps = 1,
10
maxSteps = 2;
11

12
while (output.length !== rows * cols) {
13
if (r >= 0 && c >= 0 && r < rows && c < cols) output.push([r, c]);
14
if (right) {
15
if (steps + 1 > maxSteps) {
16
(steps = 2), r++;
17
(right = false), (down = true);
18
} else c++, steps++;
19
} else if (down) {
20
if (steps + 1 > maxSteps) {
21
(steps = 2), c--;
22
(down = false), (left = true);
23
maxSteps++;
24
} else r++, steps++;
25
} else if (left) {
26
if (steps + 1 > maxSteps) {
27
(steps = 2), r--;
28
(left = false), (up = true);
29
} else c--, steps++;
30
} else if (up) {
31
if (steps + 1 > maxSteps) {
32
(steps = 2), c++;
33
(up = false), (right = true);
34
maxSteps++;
35
} else r--, steps++;
36
}
37
}
38

39
return output;
40
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0