题目描述
给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。
示例1
输入
[[1,2,3],[4,5,6],[7,8,9]]
返回值
[1,2,3,6,9,8,7,4,5]
class Solution {
public:
vector<int> spiralOrder(vector<vector<int> > &matrix) {
if(matrix.empty())return vector<int>();//停止条件
int m=matrix.size();
int n=matrix[0].size();
int left=0,right=n-1,up=0,down=m-1;
vector<int> res;
while(1){
for(int i=left;i<=right;i++){//从左向右
res.push_back(matrix[up][i]);
}
if(++up>down)break;
for(int j=up;j<=down;j++){//从上到下
res.push_back(matrix[j][right]);
}
if(--right<left)break;
for(int i=right;i>=left;i--){//从右到左
res.push_back(matrix[down][i]);
}
if(--down<up)break;
for(int j=down;j>=up;j--){//从下到上
res.push_back(matrix[j][left]);
}
if(++left>right)break;
}
return res;
}
};