题目
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
| 1 | 2 | 3 |
| 8 | 9 | 4 |
| 7 | 6 | 5 |
示例 1:
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
输入:n = 1
输出:[[1]]
提示:
1 <= n <= 20
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/spiral-matrix-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题
自己没想出来,看着别人的做的,循环不变量原则
模拟顺时针画矩阵的过程:
填充上行从左到右
填充右列从上到下
填充下行从右到左
填充左列从下到上
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
| class Solution { public int[][] generateMatrix(int n) { int loop = 0; int start = 0; int[][] res = new int[n][n]; int count = 1; int i, j; while(loop++ < n/2){ for(j = start; j < n - loop; j++){ res[start][j] = count++; } for(i = start; i < n - loop; i++){ res[i][j] = count++; } for(; j > start; j--){ res[i][j] = count++; } for(; i > start; i--){ res[i][j] = count++; } start++; } if(n % 2 == 1){ res[start][start] = count; } return res;
} }
|