【LeetCode-演算法】59. 螺旋矩陣Ⅱ(Java實現)
阿新 • • 發佈:2018-12-20
題目
給定一個正整數 n,生成一個包含 1 到 n2 所有元素,且元素按順時針順序螺旋排列的正方形矩陣。
示例
輸入: 3
輸出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
程式碼實現
class Solution { public int[][] generateMatrix(int n) { int[][] result = new int[n][n]; if (n < 1) { return result; } int top = 0, right = n - 1, buttom = n - 1, left = 0; int i = 1; int size = n * n; while (size > 0) { // from left to right for (int col = left; col <= right; col++) { result[top][col] = i; size--; i++; } top++; // from top to buttom if (size > 0) { for (int row = top; row <= buttom; row++) { result[row][right] = i; size--; i++; } right--; } // from right to left if (size > 0) { for (int row = right; row >= left; row--) { result[buttom][row] = i; size--; i++; } buttom--; } // from buttom to top if (size > 0) { for (int col = buttom; col >= top; col--) { result[col][left] = i; size--; i++; } left++; } } return result; } }
執行結果
執行結果