顺时针打印矩阵
2017-06-28 11:04
204 查看
题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.
分析
本题的解决策略是:设置上下左右四个边界,打印数据时遵循瞬时值方向,遇到边界则改变方向,当上下边界重合或者左右边界重合时退出循环。
C++代码实现如下:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.
分析
本题的解决策略是:设置上下左右四个边界,打印数据时遵循瞬时值方向,遇到边界则改变方向,当上下边界重合或者左右边界重合时退出循环。
C++代码实现如下:
vector<int> printMatrix(vector<vector<int> > matrix) { vector<int> res; if(matrix.size()== 0) return res; const int row = matrix.size(); const int col = matrix[0].size(); int up = 0,down = row -1 ,left = 0,right = col-1; while(up<=down&&left<= right){ for(int i = left;i<right;i++) res.push_back(matrix[up][i]); for(int i=up+1;i<=down) res.push_back(matrix[i][right]); if(down!=up){ for(int i = right-1;i>=left;i--) res.push_back(matrix[down][i]); } if(left!=right){ for(int i = down-1;i>up;i--) res.push_back(matrix[i][left]); } up++;right--;down--;left++; } return res; }
相关文章推荐
- 【面试题020】顺时针打印矩阵
- 数据结构-顺时针打印矩阵
- 51. 顺时针打印矩阵[print matrix in clockwise direction]
- Q14--顺时针打印矩阵
- 顺时针打印矩阵
- 剑指offer: 顺时针打印矩阵
- java-51-输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
- 顺时针打印矩阵+栈的压入、弹出序列+树的层序遍历(非递归)+二叉树中和为某一值的路径+数组中只出现一次的数字
- 顺时针打印矩阵(剑指offer面试题29)
- (剑指offer)顺时针打印矩阵
- 剑指offer之面试题20:顺时针打印矩阵
- 【剑指offer】面试题 29:顺时针打印矩阵
- 顺时针打印矩阵
- 剑指offer_顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵、矩阵顺时针转动90、之字形打印矩阵
- java顺时针、逆时针打印矩阵
- 剑指offer-20:顺时针打印矩阵
- 顺时针打印矩阵
- 每天一道算法题——顺时针打印矩阵