算法来源:LeetCode英文版
在中文版也找到了

题目

题目

解答

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
43
/**
* @param {number} n
* @return {number[][]}
*/
var generateMatrix = function(n) {
let result = []
let num = 1;
let rowStart = 0;
let cloumnStart = 0;
let rowEnd = n-1;
let cloumnEnd = n-1;
let power = Math.pow(n,2)
//创建个矩阵数组
for(let i =0;i<n;i++){
result.push([])
}

while(num <= power){
//最上面一行,cloumnStart,到cloumnEnd,填充result[rowStart][i]行
for(let i = cloumnStart;i<=cloumnEnd;i++){
result[rowStart][i] = num++
}
rowStart++

//最右边一列,rowStart,到rowEnd,填充result[i][cloumnEnd]列
for(let i = rowStart;i<=rowEnd;i++){
result[i][cloumnEnd] = num++
}
cloumnEnd--

//最下面一行,从cloumnStart,到cloumnEnd,填充result[rowEnd][i]行
for(let i = cloumnEnd;i>=cloumnStart;i--){
result[rowEnd][i] = num++
}
rowEnd--
//最左边一列,rowStart,到rowEnd,填充result[i][cloumnStart]列
for(let i = rowEnd;i>=rowStart;i--){
result[i][cloumnStart] = num++
}
cloumnStart++
}
return result
};