Given a positive integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
Example:
1 2 3 4 5 6 7
| Input: 3 Output: [ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]
|
- 设定left, right, up, down, 来指定当前的上下左右边界。
- 在不超过边界的前提下,依次从左到右,从上到下,从右到左,从下到上遍历。
- 注意输入参数小于0的情况。
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 44 45 46 47
| class Solution { public int[][] generateMatrix(int n) { if (n<=0) return new int[0][0]; int content = 1; int i=0, j = 0; int up = 0; int down = n-1; int left = 0; int right = n-1; int[][] ans = new int[n][n]; while(i>=up && i<=down && j>=left && j<= right){ while(j<=right){ ans[i][j] = content; content ++; j++; } up ++; j--; i++; while(i<=down){ ans[i][j] = content; i++; content++; } right --; i--; j--; while(j>= left){ ans[i][j] = content; j --; content ++; } down --; j++; i--; while(i>= up){ ans[i][j] = content; i --; content ++; } left ++; i++; j++; } return ans; } }
|
python