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号