【剑指**】29.顺时针打印矩阵
2018-03-05 14:59
288 查看
29.顺时针打印矩阵
题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下 矩阵: 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.
题目分析
思路请参考《剑指offer》 p161这道题目比较绕,边界容易写错,多看看。。。
代码
class Solution { public: vector<int> printMatrix(vector<vector<int> > matrix) { if (matrix.empty()) return {}; int start = 0; int row = matrix.size(); int col = matrix[0].size(); vector<int> ret; while (row > start * 2 && col > start * 2) { print_matrix(matrix, start, ret); ++start; } return ret; } void print_matrix(vector<vector<int> >& matrix, int start, vector<int>& ret) { int endX = matrix[0].size() - 1 - start; int endY = matrix.size() - 1 - start; // 左->右行,一定存在 for (int j = start; j <= endX; j++) { ret.push_back(matrix[start][j]); } // 上-> 下 if (start < endY) { for (int i = start + 1; i <= endY; i++) { ret.push_back(matrix[i][endX]); } } //右->左 if (start < endX && start < endY) { for (int j = endX - 1; j >= start; j--) { ret.push_back(matrix[endY][j]); } } //下->上 if (start < endY - 1 && start < endX) { for (int i = endY - 1; i >= start + 1; i--) { ret.push_back(matrix[i][start]); } } } };
相关文章推荐
- 【剑指offer】面试题29:顺时针打印矩阵
- 剑指Offer面试题29:顺时针打印矩阵
- 剑指offer--面试题29:顺时针打印矩阵
- 剑指offer面试题29:顺时针打印矩阵
- 【剑指offer】面试题 29:顺时针打印矩阵
- 剑指offer第19题(顺时针打印矩阵)
- 《苦练算法》-剑指Offer- 二十、顺时针打印矩阵 -python编写
- 剑指Offer:顺时针打印矩阵
- 剑指Offer--19.顺时针打印矩阵
- 【剑指Offer面试题】 九度OJ1391:顺时针打印矩阵
- 剑指offer 顺时针打印矩阵
- 剑指offer——顺时针打印矩阵
- *【九度OJ1362】|【剑指offer20】顺时针打印矩阵
- 剑指offer-顺时针打印矩阵-php
- 【剑指offer】顺时针打印矩阵
- 剑指offer-顺时针打印矩阵
- 剑指Offer面试题20(Java版):顺时针打印矩阵
- 剑指Offer18 顺时针打印矩阵
- (十三)剑指offer之顺时针打印矩阵
- 剑指offer面试题20-顺时针打印矩阵