题目:给定一个整数n,生成一个包含1到所有元素,且元素按照顺时针顺序螺旋排列的nxn正方形矩阵matrix。
示列:输入 n = 3
输出:[1,2,3],[8,9,4],[7,6,5]
解题思路:跑一层削一层
代码:
public static int[][] generateMatrix(int n) {
int left = 0;
int right = n-1;
int top = 0;
int bottom = n-1;
int k = 1;
int[][] nums = new int[n][n];
//跑一层削一层
while(k <= n*n) {
for(int i = left; i <= right; i++, k++) {
nums[top][i] = k;
}
top++;
for(int i = top; i <= bottom; i++, k++) {
nums[i][right] = k;
}
right--;
for(int i = right; i >= left;i--,k++) {
nums[bottom][i] = k;
}
bottom--;
for(int i = bottom; i>= top;i--,k++) {
nums[i][left] = k;
}
left++;
}
return nums;
}