题目大意:顺时针遍历矩阵
class Solution {
public:
vector<int> spiralOrder(vector<vector<int> > &matrix) {
vector<int> result;
if(matrix.empty() || matrix[0].empty()) {
return result;
}
int start = 0;
int row = matrix.size();
int col = matrix[0].size();
while(row > start * 2 && col > start * 2) {
spiralOrderAssist(matrix, row, col, start, result);
start++;
}
return result;
}
private:
void spiralOrderAssist(vector<vector<int> > &matrix, int row, int col, int start, vector<int>& result) {
int endRow = row - 1 - start;
int endCol = col - 1 - start;
for(int i = start; i <= endCol; i++) {
result.push_back(matrix[start][i]);
}
for(int i = start + 1; i <= endRow; i++) {
result.push_back(matrix[i][endCol]);
}
if(start < endRow) {
for(int i = endCol - 1; i >= start; i--) {
result.push_back(matrix[endRow][i]);
}
}
if(start < endCol) {
for(int i = endRow - 1; i > start; i--) {
result.push_back(matrix[i][start]);
}
}
}
};