Spiral Matrix II
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,
Given n = 3
,
[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ] ]解析:
一圈一圈的填充数组,顺时针方向,注意边界条件。
代码:
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>>ans(n,vector<int>(n));
int k=1;
int i=0;
int j=0;
while(k<=n*n)
{
j=i;
while(j<(n-i))
{
ans[i][j]=k++;
j++;
}
j=i+1;
while(j<(n-1-i))
{
ans[j][n-1-i]=k++;
j++;
}
j=n-1-i;
while(j>i)
{
ans[n-i-1][j]=k++;
j--;
}
j=n-i-1;
while(j>i)
{
ans[j][i]=k++;
j--;
}
i++;
}
return ans;
}
};