leecode:59. 螺旋矩阵 II
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
class Solution {
public int[][] generateMatrix(int n) {
//定义一个二维数组
int[][] nums = new int[n][n];
int count=1;//计数
int r=0;//行起始位置
int c=0;//列起始位置
int offset = 1;// 偏移量
int loop = n/2;//循环次数
int mid = n/2; //中间位置 (是否是奇数)
while(loop > 0){
int i = r;
int j = c;
//走四个方向
// 从左往右
for(; j<r+n-offset; j++){
nums[r][j] = count++;
}
//从上往下
for(; i<c+n-offset; i++){
nums[i][j] = count++;
}
//从右往左
for(; j>r; j--){
nums[i][j] = count++;
}
//从下往上
for(; i>c; i--){
nums[i][j] = count++;
}
r += 1;
c +=1;
//偏移量(外圈不进入循环了)
offset += 2;
loop--;
}
if(n%2==1){
nums[mid][mid] = count;
}
return nums;
}
}
感觉这个题难倒是不难,就好难理清楚,呜呜呜