给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
class Solution {
public:
vector<int> spiralOrder(vector<vector<int>>& matrix) {
if(matrix.empty())
return {};
int l=0,r=matrix[0].size()-1,t=0,b=matrix.size()-1;
vector<int> ans;
while(true){
for(int i=l;i<=r;i++)//向右移动
ans.push_back(matrix[t][i]);
if(++t>b)//判断向下移动是否越界
break;
for(int i=t;i<=b;i++)//向下移动
ans.push_back(matrix[i][r]);
if(--r<l)//判断向左移动是否越界
break;
for(int i=r;i>=l;i--)//向左移动
ans.push_back(matrix[b][i]);
if(--b<t)//判断向上移动是否越界
break;
for(int i=b;i>=t;i--)//向上移动
ans.push_back(matrix[i][l]);
if(++l>r)//判断向右移动是否越界
break;
}
return ans;
}
};
思路较为简单,依次按螺旋方向将元素存储到容器内最终返回该容器即可。