public static void main(String[] args) {
int[][] ints = generateMatrix(4);
}
public static int[][] generateMatrix(int n) {
int[][] array = new int[n][n];
generate(array,0,array.length,1);
return array;
}
/**
*
* @param array 数组
* @param x 初始位置,从0,0开始,一圈后是1,1,然后是2,2,以此类推。
* @param length 给各边赋值的长度,略小于长度一个长度,这样刚好形成一个闭环。
* @param num 应赋值的数字。
*/
public static void generate(int[][] array,int x,int length,int num){
if(length==0){return;}
if(length==1){
array[x][x]=num;
return;
}
int max = x+length-1;
for(int i =x;i<max;i++){//处理四边的上边
array[x][i] = num;
num++;
}
for(int i =x;i<max;i++){//处理四边的右边
array[i][max] = num;
num++;
}
for(int i =x+ length-1;i>x;i--){//处理四边的下边
array[max][i] = num++;
}
for(int i =x+ length-1;i>x;i--){//处理四边的左边
array[i][x]=num++;
}
generate(array,x+1,length-2,num);//从下一圈层开始赋值
}```
力扣59螺旋矩阵
最新推荐文章于 2024-09-14 18:52:56 发布