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

59. 螺旋矩阵 II

  • 题目描述
  • 题解思路
  • 代码部分
  • 小结

题目描述

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

示例 1:

力扣每日一题 Day 4(螺旋矩阵 II)_第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> generateMatrix(int n) {
        vector>vec(n);
        int i, j, num=1;
        vec.reserve(n+5);
        for(i = 0; i < n; i++)  vec[i]=vector(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的函数和概念还需要再巩固一下

你可能感兴趣的:(力扣每日刷题,leetcode)