题目描述
给定一个整数n,将数字1到n^2n
2
按螺旋的顺序填入n×n的矩阵
例如:
给出的n=3,
你应该返回如下矩阵:
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
class Solution {
public:
/**
*
* @param n int整型
* @return int整型vector<vector<>>
*/
vector<vector<int> > generateMatrix(int n) {
// write code here
vector<vector<int>> matrix(n, vector<int>(n));
int left = 0;
int right = n-1;
int up = 0;
int down = n-1;
int index = 1;
while(left <= right && up <= down){
for(int i = left; i <= right && up <= down; i++){
matrix[up][i] = index;
index++;
}
for(int i = up+1; i <= down && left<= right; i++){
matrix[i][right] = index++;
}
for(int i = right-1; i >= left && up <= down; i--){
matrix[down][i] = index++;
}
for(int i = down-1; i >= up+1 && left <= right; i--){
matrix[i][left] = index++;
}
left++;
right--;
up++;
down--;
}
return matrix;
}
};
错因分析
- 我前面都是创建的(n+1)*(n+1)维的数组,导致答案一直出错