顺时针打印矩阵
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.
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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; } };
相关文章推荐
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 面试题20:顺时针打印矩阵
- 顺时针打印矩阵
- 剑指offer面试题20 顺时针打印矩阵
- 剑指offer-顺时针打印矩阵
- 剑指offer_面试题20_顺时针打印矩阵(思路在一步步分解之中)
- 剑指offer 顺时针打印矩阵
- 【牛客网】顺时针打印矩阵
- [python] 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字[顺时针打印矩阵]
- 顺时针打印矩阵
- 笔试算法题(26):顺时针打印矩阵 & 求数组中数对差的最大值
- 剑指offer面试题[20]-顺时针打印矩阵
- java顺时针、逆时针打印矩阵
- 顺时针打印矩阵
- 20顺时针打印矩阵python
- 顺时针打印矩阵
- 顺时针打印矩阵
- 剑指offer第19题(顺时针打印矩阵)