螺旋矩阵II
1. 代码实现
public int[][] generateMatrixBySlp(int n) {
int[][] result = new int[n][n];//结果
int num = 1;//计数
int loop = 0;//控制循环次数
int x = 0, y = 0;//起始位置,可参考上图
while (loop++ < n / 2) {
for (; x < n - loop; x++) {
result[y][x] = num++;
}
for (; y < n - loop; y++) {
result[y][x] = num++;
}
for (; x >= loop; x--) {
result[y][x] = num++;
}
for (; y >= loop; y--) {
result[y][x] = num++;
}
x++;
y++;
}
//说明n为奇数
if (n % 2 == 1) {
result[y][x] = n * n;
}
return result;
}
2. 总结
这道题难就难在如何进行循环,如何处理边界条件。 处理边界条件要遵循左闭右开的原则[L,R),这样才能保证处理任意一条边所用的规则都是统一的,让每一个拐角都让下一条边拿去处理。