977(AC)
使用了暴力法和双指针法
209(AC)
使用了暴力法和双指针法
59
这道题创建的 matrix 矩阵忘记初始化了 debug了一会 才发现。。。
class Solution {
public:
vector<vector<int>> generateMatrix(int n) {
int left = 0;
int right = n-1;
int top = 0;
int bottom = n-1;
int num = 1;
vector<vector<int>> matrix(n,vector<int>(n));//忘记初始化了
while(left<=right && top<=bottom){
for(int column = left;column<=right;column++){
matrix[top][column] = num;
num++;
}
for(int row = top+1;row<=bottom;row++){
matrix[row][right] = num;
num++;
}
// if(left<right && top<bottom){
for(int column = right-1;column>=left;column--){
matrix[bottom][column] = num;
num++;
}
for(int row = bottom-1;row>=top+1;row--){
matrix[row][left]=num;
num++;
}
//}
left++;
top++;
right--;
bottom--;
}
return matrix;
}
};
54(AC)
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
if(matrix.size() == 0|| matrix[0].size() == 0){
return {};
}
vector<int> result;
int left = 0;
int right = matrix[0].size()-1;//返回matrix的列数
int top = 0;
int bottom = matrix.size() -1;//返回matrix的行数
while(left<=right && top<=bottom){
for(int column =left;column<=right;column++){
result.push_back(matrix[top][column]);
}
for(int row = top+1;row<=bottom;row++){
result.push_back(matrix[row][right]);
}
if(left<right && top<bottom){
for(int column = right-1;column>=left;column--){
result.push_back(matrix[bottom][column]);
}
for(int row = bottom-1;row>=top+1;row--){
result.push_back(matrix[row][left]);
}
}
left++;
right--;
top++;
bottom--;
}
return result;
}
};