力扣59螺旋矩阵

 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);//从下一圈层开始赋值
    }```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值