您的位置:首页 > 其它

Spiral Matrix II

2014-04-22 14:33 316 查看
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.
For example,

Given n = 3,
You should return the following matrix:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]

和Spiral Matrix几乎一样,区别就是在Spiral Matrix中讲元素压入队列,而本题只需要对每个矩阵点赋值。
vector<vector<int> > generateMatrix(int n)
{
if(n == 0)
return vector <vector <int> >();

vector <vector <int> > matrix(n);
for(int i=0; i <n; i++)
matrix[i].resize(n);
int elem = 1;
int x1 = 0;
int y1 = 0;
int x2 = n-1;
int y2 = n-1;
while(x1 <= x2 && y1 <= y2)
{
//up row
for(int i = y1; i <= y2; ++i)
matrix[x1][i] = elem++;
//right column
for(int i = x1+1; i <= x2; ++i)
matrix[i][y2] = elem++;
//bottom row
if(x2 != x1)
for(int i = y2-1; i >= y1; --i)
matrix[x2][i] = elem++;
//left column
if(y1 != y2)
for(int i = x2-1; i > x1; --i)
matrix[i][y1] = elem++;

x1++, y1++, x2--, y2--;
}

return matrix;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: