day4

[0059.螺旋矩阵II]
##

```Java
class Solution {
    public int[][] generateMatrix(int n) {
        int count = 1;
        int [][] res = new int [n][n];
        int loop = n / 2;
        int stari = 0;
        int starj = 0;
        int i = 0;
        int j = 0;
        while (loop > 0){
            for (j = starj; j < n - loop; j++ ) {
                res[i][j] = count++;    
            }
            for (i = stari; i < n - loop; i++ ) {
                res[i][j] = count++;
            }
            for (; j > n - loop; j--){
                res[i][j] = count++;
            }
            for (; i < n - loop; i--){
                res[i][j] = count++;
            }
            loop--; //我这里认为while(0)不进入循环
            starj++;
            stari++;
        }
        if (n % 2 != 0){
            res[i][j] = count++;
        }
        return res;
    }
} 
```

+ loop没理解对,导致从左到右、从上到下都赋值没问题,但从右到左、从下到上出问题了。。本题螺旋形状赋值,不仅要关注区间上的左闭右开,还要关注行列下表i、j谁静谁动。画个图具体代值更清晰一点。

```java
class Solution {
    public int[][] generateMatrix(int n) {
        int count = 1;
        int [][] res = new int [n][n];
        int loop = n / 2;
        int stari = 0;
        int starj = 0;
        int i = 0;
        int j = 0;
        while (loop > 0){
            for (j = starj; j < n - loop; j++ ) {
                res[i][j] = count++;    
            }
            for (i = stari; i < n - loop; i++ ) {
                res[i][j] = count++;
            }
            for (; j > loop - 1; j--){
                res[i][j] = count++;
            }
            for (; i > loop -1; i--){
                res[i][j] = count++;
            }
            loop--; //我这里认为while(0)不进入循环
            starj++;
            stari++;
        }
        if (n % 2 != 0){
            res[stari][stari] = count++;
        }
        return res;
    }
}
```

wuwuwu还是没运行成功,n>=4时就乱了,一定是转圈的时候参数不对。。
明天继续:)

posted @ 2022-10-29 21:32  跬步瑶  阅读(22)  评论(0)    收藏  举报