LintCode-381.螺旋矩阵 II
螺旋矩阵 II
给你一个数n生成一个包含1-n^2的螺旋形矩阵
样例
n = 3
矩阵为
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]标签
数组
code
class Solution {
public:
/**
* @param n an integer
* @return a square matrix
*/
vector<vector<int>> generateMatrix(int n) {
// Write your code here
if(n <= 0 ) {
vector<vector<int> > matrix;
return matrix;
}
vector<int> line(n);
vector<vector<int> > matrix(n, line);
int i,j,inc=1;
int cirCount = (n+1)/2;
// 第i圈
for(i=0; i<cirCount; i++) {
// 从左至右
for(j=i; j<n-i-1;j++) {
matrix[i][j] = inc++;
}
// 从上至下
for(j=i; j<n-i-1;j++) {
matrix[j][n-i-1] = inc++;
}
// 从右至左
for(j=i; j<n-i-1;j++) {
matrix[n-i-1][n-j-1] = inc++;
}
// 从下至上
for(j=i; j<n-i-1;j++) {
matrix[n-j-1][i] = inc++;
}
}
if(n%2 == 1)
matrix[n/2][n/2] = inc;
return matrix;
}
};