题目:顺时针打印矩阵
想法是,先判断矩阵是否是只有一行或者一列,如果是,则直接打印即可;否则,就按下图方式打印一圈:
打印完一圈之后,接着递归打印”内部“的矩阵。
c++代码如下:
class Solution {
public:
void print(vector<vector<int> > &matrix,vector<int> &out,int left,int top,int right,int bottom)
{
if(right-left<1)
{
while(top<=bottom)
{
out.push_back(matrix[left][top]);
++top;
}
return;
}
else if(bottom-top<1)
{
while(left<=right)
{
out.push_back(matrix[left][top]);
++left;
}
return;
}
else
{
for(int i=top;i<=bottom;++i)
{
out.push_back(matrix[left][i]);
}
for(int i=left+1;i<=right;++i)
{
out.push_back(matrix[i][bottom]);
}
for(int i=bottom-1;i>=top;--i)
{
out.push_back(matrix[right][i]);
}
for(int i=right-1;i>left;--i)
{
out.push_back(matrix[i][top]);
}
if(left+1<=right-1 && top+1<=bottom-1)
{
print(matrix,out,left+1,top+1,right-1,bottom-1);
}
}
}
vector<int> printMatrix(vector<vector<int> > matrix)
{
vector<int> out;
out.clear();
print(matrix,out,0,0,matrix.size()-1,matrix[0].size()-1);
return out;
}
};