Contents
  1. 1. 题目
  2. 2. 解题

题目

给你一个正整数 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;

}
}
Contents
  1. 1. 题目
  2. 2. 解题