00:01
来,别说话,看屏幕,我们今天看一下这个建筑offer第29题。顺时针打印矩阵,它的思路呢,就是。我们应该把这个。矩阵从右。虫类。应该把这个矩阵从外到内。依次的顺时针循环。那也就是呃,上面这个顺序。呃,完成这个思路呢。我们要注意的点就是。边界条件,严格控制它的这个安全范围。它这个从左到右,从上到下,再从右到左,再从下到上的时候,一定要注意最后的这个。衔接它是没有到这个右边界的。因为它这个之前倍利从左到右的时候就已经占用了一行,所以它这个时候不是小于等于,而是小于,能不能开始做这道题。首先它这个返回值要是list里面是T。
01:02
那我们先创建出来。好,我们现在已经有了这个返回的条件,那我们现在要做的就是一个。呃,需要我们当前的这些条件,范围,边界条件,我们把这个行。用R来表示,那R1呢,起始位置是零,R呢,自然也就是。我们的这个。数组的S,然后C呢代表列。我们这个列也是从零开始的。其二也是代表这个当前这个。在一维情况下,它这个长度,诶,这个时候注意了,我们是从零开始的,所以它这个长度要这个减一。
02:04
好,我们现在条件有了,呃,现在要控制的就是安全范围。然后。I小于等于R,并且。C1小于等于C2。然后在这个前提下,我们进行这个。首先是从左到右用一个变量I来处理,它要改变的是列啊,改变列的话,我们先。这个。条件范围C。那这个力是小于C2的。这时候应该小于等于。它可以越离到头,这是我们这个累加,然后。我们把这个。数组的值给它存到里面。存到我们这个返回值里面,呃,因为改变的是这个列的坐标,所以它这个列肯定是一定的,就是我们的变量I,它这个行坐标呢,就是我们当前的这个C。
03:12
呃,行坐标是R对。那现在从左到右完成了,他现在应该从上到下还需要便便利一下这个。电量I,它现在要改标的是行的坐标,行的话它是从呃C开始的,C加一,因为它这个。Re,加一,因为re已经用过了。这个R呢,它是要小于。小于等于。呃,不断的向下累加,那要小于它的R。好,在这个前提下,我们这个I加加。劣质不断的累加。然后re,往里面存。然后存进去是我们这个数组的什么范围呢?它改变的是现在的行值呢,行肯定是这个变量I了,它的列呢,列的话是我们的这个CC2C2的情况下灰,所以说现在就是用这个C2往里面加。
04:11
然后现在要进行一个边界值的安全范围。给他的限制先要从左到右,它改变的是我们当前的这个。呃,列子改变列值的话,我们要保证它这个行是符合它这个范围的,也就是说我们的R1是不可能等于R2的。在这个安全范围限制下,我们开始去调整这个当前列的范围,也就是从右到左,然后再借助一个变量I来处理的话。呃。他应该。开始的这个。坐标点应该是R2的减一,然后不断的是。呃,这个。嗯,C2减一啊,C2减一,然后它这个C2。
05:03
C2。当前这个变量I代替C2,它应该是大于等于我们的C1的。然后I不断的减减,它是从这个大到小别离的。然后再往res里面存这个。矩阵它变的是这个列值,所以我们把这个I放到这个列里面,那现在不变的是这个R2。对。所以我们现在这个从右到左啊处理完了。同理啊,他现在要处理的是这个行值的从下到上,因此我们这个要控制这个列是要在这个安全范围内的。那我们首先这个。诶,同理。再借助这个变量I。现在要改的是这个R,我们是从R。
06:01
R1R2减1R2减一这个位置。然后不断的。这个R。它应该大于我们的R1。还记得刚刚说的吗?他这个re那个位置已经被占用了,因为他在这个从左到右的时候就已经被占用过了。这个I还是减减的位置。然后再往这个。Res里面去存我们这个矩阵。ADD。然后它现在改变的是这个行的值,所以行的是应该I,我们没变的应该是列值,它是C1。然后在这个所有的,呃。适中业力完成情况下,我们一定要把所有的范围进行一个缩减,那缩减什么呢?应该就是R1,它要加加。R1加加,然后。R减减。
07:01
C加加。C2减减。然后再我们这个处理好的res好进行一个提交。哇。
我来说两句