题目
- 给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
示例:
输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
实现
Java实现
思路: 首先设定边界,确定循环条件(num<=target),因为从1到n^2这些数字都要被赋值,之后利用循环在边界内进行赋值即可,按照顺时针的顺序,从左到右,从上到下,从右到左,从下到上。
class Solution {
public int[][] generateMatrix(int n) {
//定义边界
int left = 0, right = n - 1, top = 0, buttom = n - 1;
int num = 1;
int target = n * n;
int[][] res = new int[n][n];
while (num <= target) {
//从左到右
for (int i = left; i <= right; i++) {
res[top][i] = num++;
}
top++;
//从上到下
for (int i = top; i <= buttom; i++) {
res[i][right] = num++;
}
right--;
//从右到左
for (int i = right; i >= left; i--) {
res[buttom][i] = num++;
}
buttom--;
//从下到上
for (int i = buttom; i >= top; i--) {
res[i][left] = num++;
}
left++;
}
return res;
}
}
- 时间复杂度:O(n^2)