代码随想录算法训练营 Day2 螺旋矩阵II

189 阅读1分钟

螺旋矩阵II

题目链接

1. 代码实现

image.png

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),这样才能保证处理任意一条边所用的规则都是统一的,让每一个拐角都让下一条边拿去处理。