题目:
Given a positive integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
在牛客网上有个类似的题。那个题是给出一个矩阵,顺时针打印出来。
这个是给一个整数,生成一个矩阵。
例子:
Example:
Input: 3
Output:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
解析:
生成了一个n*n的矩阵,按顺时针顺序,赋值i++即可。
代码:
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>>res(n,vector<int>(n,0));
int i = 0,k=1;
while(k<=n*n)
{
int j = i;
while(j<n-i)res[i][j++] = k++;
j = i+1;
while(j<n-i)res[j++][n-i-1] = k++;
j = n-i-1-1;
while(j>i)res[n-i-1][j--] = k++;
j = n-i-1;
while(j>i)res[j--][i] = k++;
i++;
}
return res;
}
};
好久没有写题目,才发现好多地方都改版了,
leetcode和csdn的界面做的还可以了。