题目大意:跟这题差不多http://blog.youkuaiyun.com/xiaoxiaoluo/article/details/44527045, 这里要求形成一个顺序的顺时针n * n的矩阵
class Solution {
public:
vector<vector<int> > generateMatrix(int n) {
vector<vector<int> > matrix(n, vector<int>(n, 0));
if(n == 0) {
return matrix;
}
int col = n, row = n;
int start = 0, val = 1;
while(col > 2 * start && row > 2 * start) {
generateMatrixAssist(matrix, row, col, start, val);
start++;
}
return matrix;
}
private:
void generateMatrixAssist(vector<vector<int> > &matrix, int row, int col, int start, int &val) {
int endCol = col - 1 - start;
int endRow = row - 1 - start;
for(int i = start; i <= endCol; i++) {
matrix[start][i] = val++;
}
for(int i = start + 1; i <= endRow; i++) {
matrix[i][endCol] = val++;
}
if(start < endRow) {
for(int i = endCol - 1; i >= start; i--) {
matrix[endRow][i] = val++;
}
}
if(start < endCol) {
for(int i = endRow - 1; i > start; i--) {
matrix[i][start] = val++;
}
}
}
};