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 ] ]无需解释,LEETCODE已经有好几个类似的例子了。
class Solution {
public:
vector<vector<int> > generateMatrix(int n) {
vector<vector<int> > results(n, vector<int>(n, 0));
int rount = n / 2;
int center = n % 2 == 1 ? 1 : 0;
int data = 1;
for(int ii = 0; ii < rount; ii ++) {
for(int jj = ii; jj < n - ii - 1; jj ++) {
results[ii][jj] = data;
data ++;
}
for(int jj = ii; jj < n - ii - 1; jj ++) {
results[jj][n - ii - 1] = data;
data ++;
}
for(int jj = ii; jj < n - ii - 1; jj ++) {
results[n - ii - 1][n - jj - 1] = data;
data ++;
}
for(int jj = ii; jj < n - ii - 1; jj ++) {
results[n - jj - 1][ii] = data;
data ++;
}
}
if(center == 1) {
results[rount][rount] = data;
}
return results;
}
};