题目描述
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
示例
解题思想
模拟
循环一圈 后
跳出循环的条件:左边界>右边界 或者 上边界 > 下边界
代码
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
vector<int> ans;
int n = matrix.size(), m = matrix[0].size(); //n行,m列
int up = 0, left = 0, bottom = n - 1, right = m - 1;
while (true) {
for (int i = left; i <= right; i++) ans.push_back(matrix[up][i]);
if (++up > bottom) break;
for (int i = up; i <= bottom; i++) ans.push_back(matrix[i][right]);
if (--right < left ) break;
for (int i = right; i >= left; i--) ans.push_back(matrix[bottom][i]);
if (--bottom < up) break;
for (int i = bottom; i >= up; i--) ans.push_back(matrix[i][left]);
if (++left > right ) break;
}
return ans;
}
};