螺旋矩阵 II

问题描述:

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

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/spiral-matrix-ii

思路:

和上一个螺旋矩阵的思路基本是一样的,详情见 螺旋矩阵
不同的是,本题是通过循环次数n×n来控制循环的。

题解:

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        int u, d, l, r;
        u = 0;
        l = 0;
        d = n - 1;
        r = n - 1;
        int count = 1;
        vector<vector<int>> ret;
        ret.resize(n);
        for (int i = 0; i < n; i++) {
            ret[i].resize(n);
        }
        while (count <= n * n) {
            for (int i = l; i <= r; i++) {
                ret[u][i] = count;
                count++;
            }
            u++;
            for (int i = u; i <= d; i++) {
                ret[i][r] = count;
                count++;
            }
            r--;
            for (int i = r; i >= l; i--) {
                ret[d][i] = count;
                count++;
            }
            d--;
            for (int i = d; i >= u; i--) {
                ret[i][l] = count;
                count++;
            }
            l++;
        }
        return ret;
    }
};

标签: none

添加新评论