54.螺旋矩阵
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
- 设置四个变量表示四个方向的边界,如果一个方向的边界越过了相对的方向就退出
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
if(matrix.size() == 0) return {};
vector<int> res;
int count = matrix.size() * matrix[0].size();
int left = 0,right = matrix[0].size()-1,up = 0,down = matrix.size()-1;
while(1){
for(int i = left;i <= right;i++) res.push_back(matrix[up][i]);
if(++up > down) break;
for(int i = up;i <= down;i++) res.push_back(matrix[i][right]);
if(--right < left) break;
for (int i = right; i >= left; i--) res.push_back(matrix[down][i]);
if (--down < up) break;
for (int i = down; i >= up; i--) res.push_back(matrix[i][left]);
if (++left > right) break;
}
return res;
}
};
通过时间: