题目描述
给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。
题解:
其实就是模拟过程,先往左走,走到头向下走,到头后向左走,再向上走
一直循环过程
代码:
class Solution {
public:
vector<int> spiralOrder(vector<vector<int> > &matrix) {
vector<int> ret;
if(matrix.size()==0) return ret;
int m=matrix.size();//行数
int n=matrix[0].size();//列数
int up=0,down=m-1,left=0,right=n-1;
while(up<=down && left<=right)
{
//向右移动
for(int j=left;j<=right;j++)
ret.push_back(matrix[up][j]);
up++;
//向下移动
for(int j=up;j<=down;j++)
ret.push_back(matrix[j][right]);
right--;
if(up<=down){
//向左移动
for(int j=right;j>=left;j--)
ret.push_back(matrix[down][j]);
}
down--;
if(left<=right)
{
//向上移动
for(int j=down;j>=up;j--)
ret.push_back(matrix[j][left]);
}
left++;
}
return ret;
}
};