您的位置:首页 > 其它

顺时针打印矩阵

2017-03-11 15:28 162 查看
题目描述

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

class Solution {
public:
vector<int> printMatrix(vector<vector<int> > matrix) {
if(matrix.size()==0)
return vector<int>{};
int n=matrix.size();
int m=matrix[0].size();
vector<int> res{};
int index=0;
while(index<=n&&index<=m)
{
vector<int> temp= print(matrix,index,m-1,n-1);
res.insert(res.end(),temp.begin(),temp.end());
++index;
--n;
--m;
}
return res;
}
vector<int> print(vector<vector<int> > matrix,int index,int right,int bottom)
{
vector<int> res;
if(index==right&&index<=bottom){
int temp=index;
while(temp<=bottom){
res.push_back(matrix[temp++][index]);
}
}
else if(index<right&&index==bottom)
{
int temp=index;
while(temp<=right){
res.push_back(matrix[index][temp++]);
}
}
else if(index<right&&index<bottom)
{
int i=index;
int j=index;
while(j<right)

4000
res.push_back(matrix[i][j++]);
while(i<bottom)
res.push_back(matrix[i++][j]);
while(j>index)
res.push_back(matrix[i][j--]);
while(i>index)
res.push_back(matrix[i--][j]);
}
return res;

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: