LeetCode 0059 Spiral Matrix II
阿新 • • 發佈:2022-04-04
1. 題目描述
2. Solution
1、思路分析
將num in [1, n*n],按右、下、左、上的順序依次放入result中,用rowBegin,rowEnd,colBegin,colEnd控制邊界。
2、程式碼實現
package Q0099.Q0059SpiralMatrixII; /* 思路: num儲存1~n*n,現在需要把num按回形放入指定位置 */ class Solution { public int[][] generateMatrix(int n) { int[][] matrix = new int[n][n]; if (n <= 0) return matrix; int num = 1, rowBegin = 0, rowEnd = n - 1, colBegin = 0, colEnd = n - 1; while (rowBegin <= rowEnd && colBegin <= colEnd) { // 向 右 for (int i = colBegin; i <= colEnd; i++) matrix[rowBegin][i] = num++; rowBegin++; // 向 下 for (int i = rowBegin; i <= rowEnd; i++) matrix[i][colEnd] = num++; colEnd--; // 向 左 for (int i = colEnd; i >= colBegin; i--) matrix[rowEnd][i] = num++; rowEnd--; // 向上 for (int i = rowEnd; i >= rowBegin; i--) matrix[i][colBegin] = num++; colBegin++; } return matrix; } }
3、複雜度分析
時間複雜度: O(n^2)
空間複雜度: O(1)