59. 螺旋矩阵 II

2021-10-10  本文已影响0人  justonemoretry
image.png

解法

class Solution {
    public int[][] generateMatrix(int n) {
        // 旋转圈数
        int loop = n / 2;
        // 旋转圈起始位置
        int l = 0;
        // 自增开始的数值
        int num = 1;
        int[][] res = new int[n][n];
        while (l < loop) {
            int i = l;
            int j = l;
            // 上边,都是左闭右开
            for (; j < n - 1 - l; j++) {
                res[i][j] = num++;
            }
            // 右边
            for (; i < n - 1 - l; i++) {
                res[i][j] = num++;
            }
            // 下边
            for (; j > l; j--) {
                res[i][j] = num++;
            }
            // 左边
            for (; i > l; i--) {
                res[i][j] = num++;
            }
            l++;
        }
        // 奇数时中间单独填充
        if (n % 2 == 1) {
            res[loop][loop] = num;
        }
        return res;
    }
}
上一篇下一篇

猜你喜欢

热点阅读