欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

领扣笔记

程序员文章站 2022-05-20 13:59:44
...

螺旋矩阵 II

题目:给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

示例:

输入: 3
输出:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]

我自己写的解答,AC,记录笔记

class Solution {
    public int[][] generateMatrix(int n) {
        if (n == 0) return null;
        int[][] res = new int[n][n];
        int x = 0, y = 0, j = 1, num = n;
        while (n > 0) {
            for (int i = 0; i < n - 1; i++) {
                res[x][y++] = j++;
            }
            for (int i = 0; i < n - 1; i++) {
                res[x++][y] = j++;
            }
            for (int i = 0; i < n - 1; i++) {
                res[x][y--] = j++;
            }
            for (int i = 0; i < n - 1; i++) {
                res[x--][y] = j++;
            }
            x++;
            y++;
            n -= 2;
        }
        //注意这里,如果n为奇数的话,到最后一次最中心的元素因为for循环中条件没有满足不会去赋值,所以这里要检验一下最后一个元素赋值是否被跳过了
        if (n == -1) {
            res[(num-1)/2][(num-1)/2] = j;
            
        }
        return res;
    }
}

路漫漫其修远兮,共勉

相关标签: 领扣