题目描述
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
题目分析
- 根据题意可知,我们不需要记录已经走过的路径,只需要通过调整矩阵的上下左右边界即可完成任务;
- 首先创建出矩阵的上下左右边界;
- 开始遍历矩阵:
先从左上角,从左向右遍历第一行,然后删除第一行,即重新定义上边界;
然后判断重新定义后的上下边界是否交错,如果交错,则表示螺旋矩阵遍历结束,跳出循环,返回数组;
如果重新定义后的边界没有交错,则接着遍历矩阵; - 使用3中类似的逻辑接着向下向左向上移动;
- 不断循环步骤3和4,直至某两个边界交错,跳出循环为止,最后返回结果。
Code
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
if (matrix.empty()) return {
};
vector