模拟
- 用top,buttom,left,right表示范围
- 顺时针单边后,修改边界值并判断,避免越界以及避免变量重复
class Solution {
public:
vector<int> printMatrix(vector<vector<int> > matrix) {
vector<int> v;
if(!matrix.size())
{
return v;
}
int top=0;
int buttom=matrix.size()-1;
int left=0;
int right=matrix[0].size()-1;
int i=top,j=left;
while(top<=buttom&&left<=right)
{
i=top;j=left;
while(j<=right)
{
v.push_back(matrix[i][j++]);
}
top++;
if(top>buttom)
{
break;
}
i=top;
j=right;
while(i<=buttom)
{
v.push_back(matrix[i++][j]);
}
right--;
if(right<left)
{
break;
}
j=right;
i=buttom;
while(j>=left)
{
v.push_back(matrix[i][j--]);
}
buttom--;
if(buttom<top)
{
break;
}
j=left;
i=buttom;
while(i>=top)
{
v.push_back(matrix[i--][j]);
}
left++;
}
return v;
}
};