力扣每日一题 Day 4(螺旋矩阵 II)

题目描述

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

示例 1:

在这里插入图片描述

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

输入:n = 1
输出:[[1]]

提示:

1 <= n <= 20

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

题解思路

用空间换时间

vector的内存一开始没有开辟,导致卡了一会儿。其他基本上延续的是昨天那道题的框架,只是反过来输出而已。

代码部分

class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        vector<vector<int>>vec(n);
        int i, j, num=1;
        vec.reserve(n+5);
        for(i = 0; i < n; i++)  vec[i]=vector<int>(n);
        for(i = 0;i <= (n-1)/2; i++){
            for(j = i; j <= n-i-1; j++)
                vec[i][j]=num++;
            for(j = i+1; j < n-i; j++)
                vec[j][n-i-1]=num++;
            for(j = n-i-2; j >= i && (n-1-i != i); j--)
                vec[n-1-i][j]=num++;
            for(j = n-i-2; j > i && (n-1-i) != i; j--)
                vec[j][i]=num++;
        }
        return vec;
    }
};

小结

vector的函数和概念还需要再巩固一下

猜你喜欢

转载自blog.csdn.net/The_Dan/article/details/114867065