代码随想录:螺旋矩阵 II

代码随想录:螺旋矩阵 II

题目是不难的,本质是重复多次顺时针旋转,注意边界条件。

我第一次写错是二维数组的运用出了问题,vec[i][j]中,i代表行,j代表列,我的脑袋是明白的,但是在运用时,一开始二维矩阵向右遍历时,其实变的是j而非i

另外注意一下二维vector的建立就行

//二维vector数组本质上是一个存放了一维vector数组的vector
vector<vector<int>> res(n, vector<int>(n,0))
vector<数据类型>
vectoc(几个,什么东西)
class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>> res(n, vector<int>(n, 0));
        int loop = n / 2;
        int target = n % 2;
        int start = 0;
        int end = n;
        int num = 1;
        int i = 0;
        int j = 0;

        if (target == 1) {
            res[loop][loop] = n * n;
        }

        while (loop > 0) {
            for (i = start; i < end - 1; i++) {
                res[start][i] = num;
                num++;
            }
            for (j = start; j < end - 1; j++) {
                res[j][end - 1] = num;
                num++;
            }
            for (; i > start; i--) {
                res[end - 1][i] = num;
                num++;
            }
            for (; j > start; j--) {
                res[j][start] = num;
                num++;
            }
            start++;
            end--;
            loop--;
        }
        return res;
    }
};
posted @ 2024-11-17 15:12  huigugu  阅读(2)  评论(0编辑  收藏  举报