- 超级容易理解的螺旋矩阵代码
public static int[][] generateMatrix(int n) {
int[][] res = new int[n][n];
int loop = 1; //定义循环圈数
int i = 0 , j = 0; //定义二维数组的横纵坐标
int count = 1; //定义填入数组的数 大于等于1,小于等于n
//控制循环圈数,一圈循环一次,每次分为四个区域添加内容
while (loop <= n/2){
//*****第loop圈的填充个数为n-(2loop-1),因此j的终止为loop-1+(n-2loop+1)
for(j = loop - 1; j <= n - loop - 1; j++){
res[i][j]= count++;
}
for(i = loop - 1; i <= n - loop - 1; i++){
res[i][j]= count++;
}
for(j = n - loop; j >= loop; j--){
res[i][j]= count++;
}
for(i = n - loop; i >= loop; i--){
res[i][j]= count++;
}
loop++;
//*****每次循环结束,更新i和J位置,从每圈的左上角元素开始遍历
i = loop - 1;
j = loop - 1;
}
//N为奇数时,对最后一个元素处理
if(n % 2 == 1){
res[n / 2][n / 2] = n * n;
}
return res;
}