第九十九天:力扣 59题,螺旋矩阵 II
地址:leetcode-cn.com/problems/sp…
思路:直接循环遍历
var generateMatrix = function (n) {
if(n == 1) return [[1]] // 特殊情况
var res = [];
for (var i = 0; i < n; i++) {
res[i] = [];
}
var circleNum = n - 1;
var num = 1;
var count = 0;
while (circleNum) {
var x = count;
var y = count;
var rect = n - (count * 2);
if(rect == 1){
res[y][x] = num
}; // 最中间的圈为1时
// 上
for(var i = 0; i < rect - 1; i++){
res[y][x++] = num++;
}
// 右
for(var i = 0; i < rect - 1; i++){
res[y++][x] = num++;
}
// 下
for(var i = 0; i < rect - 1; i++){
res[y][x--] = num++;
}
// 左
for(var i = 0; i < rect - 1; i++){
res[y--][x] = num++;
}
// 每次圈数
circleNum--;
// 记录循环次数,用于定义每次起点的位置
count ++;
}
return res;
};
执行用时:88 ms, 在所有 JavaScript 提交中击败了36.62%的用户
内存消耗:37.9 MB, 在所有 JavaScript 提交中击败了49.05%的用户