59. 螺旋矩阵 II

整体代码(模仿法)
class Solution {
    public int[][] generateMatrix(int n) {
        int[][] arrs=new int[n][n];
        int l=0;int r=n-1;int t=0;int b=n-1;
        int cen=n*n; int num=1;
        while(num<=cen){
            for(int i=l;i<=r;i++)arrs[t][i]=num++;
            t++;
            for(int i=t;i<=b;i++)arrs[i][r]=num++;
            r--;
            for(int i=r;i>=l;i--)arrs[b][i]=num++;
            b--;
            for(int i=b;i>=t;i--)arrs[i][l]=num++;
            l++;
        }
        return arrs;

    }
}
int[][] arrs=new int[n][n];
1.注意:new后边写的数据类型,不是数组名。

理解for循环的执行机制:for(int i=l;i<=r;i++)arrs[t][i]=num++;
把for循环中分为四部分:Aint i=l,Bi<=r,C方法体的代码.Di++
其中A只会执行一次。然后就判段B的条件是否满足,如果满足才会往下执行,不满足直接退出循环。最后可执行顺序可表示为ABCDBCDBCD…直到退出循环。

2.题解中代码的细节:

(1)i的值在每次循环都会使用i++i--来进行该变,目的是找到要填充的数组位置。
(2)通过i<=ri<=bi>=li>=t来控制循环的退出。
(3)循环途中的代码到底执行几次,是由int i=l;i<=r;i++来控制的,若用i<=r执行次数为:r-l+1。若用i<r执行次数为:r-l(前提是i++。)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值