[LeetCode] 59. Spiral Matrix II

螺旋矩阵二。题意是给一个数字n,请输出一个n x n的矩阵,被从1到n方这n方个数字填满。填满的方式同54题。例子,

Example:

Input: 3
Output:
[
 [ 1, 2, 3 ],
 [ 8, 9, 4 ],
 [ 7, 6, 5 ]
]

这个题跟54题做法几乎一样。也是要通过找到row和column的边界来完成填充的动作。首先用JS创建一个n x n的二维数组并用0填满。遍历的时候,也是按照右 - 下 - 左 - 上的顺序。

时间O(n)

空间O(n^2)

 1 /**
 2  * @param {number} n
 3  * @return {number[][]}
 4  */
 5 var generateMatrix = function (n) {
 6     let res = Array(n).fill(0).map(() => Array(n).fill(0));
 7     let rowBegin = 0;
 8     let rowEnd = n - 1;
 9     let colBegin = 0;
10     let colEnd = n - 1;
11     let num = 1;
12 
13     while (rowBegin <= rowEnd && colBegin <= colEnd) {
14         // right
15         for (let i = colBegin; i <= colEnd; i++) {
16             res[rowBegin][i] = num++;
17         }
18         rowBegin++;
19 
20         // down
21         for (let i = rowBegin; i <= rowEnd; i++) {
22             res[i][colEnd] = num++;
23         }
24         colEnd--;
25 
26         // left
27         for (let i = colEnd; i >= colBegin; i--) {
28             res[rowEnd][i] = num++;
29         }
30         rowEnd--;
31 
32         // up
33         for (let i = rowEnd; i >= rowBegin; i--) {
34             res[i][colBegin] = num++;
35         }
36         colBegin++;
37     }
38     return res;
39 };

猜你喜欢

转载自www.cnblogs.com/aaronliu1991/p/12306149.html