给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
int left = 0, right = n - 1;
int up = 0, down = n - 1;
vector<vector<int>> matrix(n, vector<int>(n, 0));
int count = 1;
while ( left < right && up < down) {
for (int i = left; i < right; i++) {
matrix[up][i] = count++;
}
for (int i = up; i < down; i++) {
matrix[i][right] = count++;
}
for (int i = right; i > left; i--) {
matrix[down][i] = count++;
}
for (int i = down; i > up; i--) {
matrix[i][left] = count++;
}
left++;
right--;
up++;
down--;
}
if (up == down && left == right) {
matrix[up][up] = count;
}
return matrix;
}
};
问题分析
- 共花了19分钟
- 修改的边界错误花了8分钟