您的位置:首页 > 其它

lintcode-螺旋矩阵 II

2016-09-02 10:55 351 查看
给你一个数n生成一个包含1-n^2的螺旋形矩阵

样例

n = 3

矩阵为

[

[ 1, 2, 3 ],

[ 8, 9, 4 ],

[ 7, 6, 5 ]

]

class Solution {
public:
/**
* @param n an integer
* @return a square matrix
*/
vector<vector<int> > generateMatrix(int n) {
// Write your code here
vector<vector<int> > vec(n,vector<int>(n,0));
if(n<=0) return vec;
int row=n;//行数
int col=n;//列数
int left=0,top=0;//左上角坐标(left,top)
int bottom=row-1,right=col-1;//右下角坐标(bottom,right)
int k=1;
while(left<=bottom  && top<=right)
{
for(int i=top;i<=right;i++) vec[left][i]=k++;//从左到右打印
for(int i=left+1;i<=bottom;i++) vec[i][right]=k++;//从上到下打印
if(left!=bottom)
for(int i=right-1;i>=top;i--) vec[bottom][i]=k++;//从右往左打印
if(top!=right)
for(int i=bottom-1;i>left;i--) vec[i][top]=k++;//从左向上打印
left++;
top++;
bottom--;
right--;
}
return vec;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lintcode