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  跬步瑶  阅读(30)  评论(0)    收藏  举报