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时就乱了,一定是转圈的时候参数不对。。
明天继续:)
本文来自博客园,作者:跬步瑶,转载请注明原文链接:https://www.cnblogs.com/deservee/p/16839938.html

浙公网安备 33010602011771号