模拟题
螺旋矩阵
给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。 1
class Solution {
public:
vector<int> spiralOrder(vector<vector<int> > &matrix) {
if(matrix.size() == 0) return {};
vector<int> result;
int top = 0, bottom = matrix.size() - 1;
int left = 0, right = matrix[0].size() - 1;
while(top <= matrix.size() / 2 && left <= matrix[0].size() / 2) {
// top l -> r
for(int i = left; i <= right; ++i) result.push_back(matrix[top][i]);
// left top -> bottom
for(int i = top + 1; i <= bottom; ++i) result.push_back(matrix[i][right]);
// bottom r -> l
for(int i = right - 1; top != bottom && i >= left; --i) result.push_back(matrix[bottom][i]);
// l bottom -> top
for(int i = bottom - 1; left != right && i >= top + 1; --i) result.push_back(matrix[i][left]);
++top;
--bottom;
++left;
--right;
}
return {result.begin(), result.begin() + matrix.size()*matrix[0].size()};
}
};