力扣--59.螺旋矩陣II

模擬順時針畫矩陣的過程:
- 填充上行從左到右
- 填充右列從上到下
- 填充下行從右到左
- 填充左列從下到上
由外向內一圈一圈這么畫下去
/** * 生成一個包含從1到n*n的數字的矩陣 * @param {number} n - 矩陣的大小,為正整數 * @return {number[][]} - 返回一個n x n的二維數組,數組中的每個元素為從1到n*n的遞增數字 */ var generateMatrix = function (n) { let matrix = new Array(n); for (let i = 0; i < n; i++) { matrix[i] = new Array(n).fill(0); } let top = 0, bottom = n - 1, left = 0, right = n - 1; let direction = [[-1, 0], [0, 1], [1, 0], [0, -1]]; // 上、右、下、左四個方向 let index = 0; while (top <= bottom && left <= right) { // 沿著當前方向遍歷邊界 for (let i = left; i <= right; i++) { matrix[top][i] = ++index; } top++; for (let i = top; i <= bottom; i++) { matrix[i][right] = ++index; } right--; if (top <= bottom) { for (let i = right; i >= left; i--) { matrix[bottom][i] = ++index; } bottom--; } if (left <= right) { for (let i = bottom; i >= top; i--) { matrix[i][left] = ++index; } left++; } } return matrix; };

浙公網安備 33010602011771號