## 题目
给你一个正整数 n
,生成一个包含 1
到 n2
所有元素,且元素按顺时针顺序螺旋排列的 n x n
正方形矩阵 matrix
。
示例 1:
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
输入:n = 1
输出:[[1]]
提示:
1 <= n <= 20
解题
方法一:模拟
思路
代码
class Solution {
public int[][] generateMatrix(int n) {
int[][] ans = new int[n][n];
int ele = 1, offset = -1, bound, mid = n >> 1;
while (offset++ < n) {
bound = n - offset - 1;
for (int i = offset; i < bound; i++) {
ans[offset][i] = ele++;
}
for (int i = offset; i < bound; i++) {
ans[i][n - 1 - offset] = ele++;
}
for (int i = bound; i > offset; i--) {
ans[n - 1 - offset][i] = ele++;
}
for (int i = bound; i > offset; i--) {
ans[i][offset] = ele++;
}
}
if ((n & 1) == 1) {
ans[mid][mid] = ele;
}
return ans;
}
}
评论区