59. 螺旋矩阵 II
题目要求:给定一个正整数 n,生成一个包含 1 到 n^2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
解题思路:设置四个变量,分别表示上下左右边界,然后针对每次顺时针走一圈,考虑四种情况
- 从左到右结束时,上边界+1
- 从上到下结束时,右边界-1
- 从右到左结束时,下边界-1
- 从下到上结束时,左边界+1
public int[][] generateMatrix(int n) {
int[][] nums = new int[n][n];
int num = 1;
int l = 0;
int r = n - 1;
int t = 0;
int b = n - 1;
int target = n * n;
while (num <= target) {
for (int i = l; i <= r; i++) nums[t][i] = num++;
t++;
for (int i = t; i <= b; i++) nums[i][r] = num++;
r--;
for (int i = r; i >= l; i--) nums[b][i] = num++;
b--;
for (int i = b; i >= t; i--) nums[i][l] = num++;
l++;
}
return nums;
}