输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
方法:循环遍历整个数组,循环中再嵌套四个循环,分别是从左至右,从上至下,从右至左,从下至上这几个方向,按照题意将整个数组遍历完成,控制好边界。
时间复杂度:O(mn),空间复杂度:O(1)
vector<int> printMatrix(vector<vector<int> > matrix)
{
int bottom=matrix.size()-1;
int right=matrix[0].size()-1;
int left=0,top=0;
vector<int> res;
while(top<=bottom&&left<=right)
{
for(int i=left;i<=right;i++)
{
res.push_back(matrix[top][i]);
}
top++;
//判断是否达到边界循环结束
if(top>bottom)
{
break;
}
for(int i=top;i<=bottom;i++)
{
res.push_back(matrix[i][right]);
}
right--;
//判断是否达到边界循环结束
if(left>right)
{
break;
}
for(int i=right;i>=left;i--)
{
res.push_back(matrix[bottom][i]);
}
bottom--;
//判断是否达到边界循环结束
if(top>bottom)
{
break;
}
for(int i=bottom;i>=top;i--)
{
res.push_back(matrix[i][left]);
}
left++;
//判断是否达到边界循环结束
if(left>right)
{
break;
}
}
return res;
}