给你一个正整数 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> 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的函数和概念还需要再巩固一下