您的位置:首页 > 其它

Spiral Matrix II

2015-08-16 18:28 344 查看
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 ]
]

class Solution {
public:
vector<vector<int> > generateMatrix(int n) {
if(n==0)
return vector<vector<int>>();
int startx=0,starty=0,endx=n-1,endy=n-1;
vector<int> ivec(n);
vector<vector<int>> ovec(n,ivec);
int c=n,head=1;
while(startx<=endx&&starty<=endy){
ovec[startx][starty]=head;
for(int i=starty+1;i<=endy;i++)
ovec[startx][i]=ovec[startx][i-1]+1;
for(int i=startx+1;i<=endx;i++)
ovec[i][endy]=ovec[i-1][endy]+1;
for(int i=endy-1;i>=starty;i--)
ovec[endx][i]=ovec[endx][i+1]+1;
for(int i=endx-1;i>=startx+1;i--)
ovec[i][starty]=ovec[i+1][starty]+1;
head=head+4*c-4;
startx++;
starty++;
endx--;
endy--;
c=c-2;
}
return ovec;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: