❗❗59螺旋矩阵II

力扣刷题 59 螺旋矩阵 II--day2

题目分析

还是要多在纸上模拟,

这道题目要小心边界条件, 保持一致性
一条边一条边处理, 区间是左闭右开

vector<vector<int>> generateMatrix(int n)
{
    vector<vector<int>> result(n, vector<int>(n));
    int length = n;
    int value = 1;
    int beginXY = 0;
    int endXY = length - 2;
    while (length > 0)
    {
        for (int j = beginXY; j <= endXY; j++)
        {
            result[beginXY][j] = value++;
        }

        for (int i = beginXY; i <= endXY; i++)
        {
            result[i][endXY + 1] = value++;
        }

        for (int j = endXY + 1; j > beginXY; j--)
        {
            result[endXY + 1][j] = value++;
        }

        for (int i = endXY + 1; i > beginXY; i--)
        {
            result[i][beginXY] = value++;
        }

        beginXY++;
        endXY--;
        length -= 2;
    }

    //当n为奇数时, 最中间的数要单独处理
    if (n % 2)
    {
        int mid = n / 2;
        result[mid][mid] = n * n;
    }
    return result;
}
posted @ 2023-04-20 20:41  chuxin_jian  阅读(30)  评论(0)    收藏  举报