顺时针打印矩阵
2017-04-18 20:57
183 查看
今天在牛客网的剑指offer上刷了一道顺时针打印矩阵的题目,觉得很有意思,就写下来分享了,题目是这样描述的:
一.题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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。二.题目分析
用左上和右下的坐标定位出一次要旋转和打印的数据,然后修改坐标定位,具体分析如下:![顺时针打印矩阵描述](https://img-blog.csdn.net/20170418210912617?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzQzMjg4MzM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
三.代码实现
#include<iostream> #include<vector> #include<cassert> using namespace std; class Solution { public: vector<int> PrintMatrix(vector<vector<int>> matrix) { int rows1=0; int cols1=0; int rows2=matrix.size(); //4 int cols2=matrix[0].size();//4 assert(!matrix.empty()); vector<int> result; while(rows1 < rows2 && cols1 < cols2) { //左-->右 for(int i=cols1;i<cols2;i++) { result.push_back(matrix[rows1][i]); } rows1++; //上-->下 for(int i=rows1;i<rows2;i++) { result.push_back(matrix[i][cols2-1]); } cols2--; //右-->左 for(int i=cols2-1;i>=cols1;i--) { result.push_back(matrix[rows2-1][i]); } rows2--; //下-->上 for(int i=rows2-1;i>=rows1;i--) { result.push_back(matrix[i][cols1]); } cols1++; } return result; } void ShowMatrix(vector<int> result) { assert(!result.empty()); for(size_t i=0;i<result.size();i++) { cout<<result[i]<<" "; } cout<<endl; } }; int main() { Solution so; vector<vector<int>> matrix; vector<int> tmp; //1,2,3,4 for(int i=1;i<=4;i++) { tmp.push_back(i); } matrix.push_back(tmp); for(int i=1;i<=4;i++) { tmp.pop_back(); } //5,6,7,8 for(int i=5;i<=8;i++) { tmp.push_back(i); } matrix.push_back(tmp); for(int i=1;i<=4;i++) { tmp.pop_back(); } //9,10,11,12 for(int i=9;i<=12;i++) { tmp.push_back(i); } matrix.push_back(tmp); for(int i=1;i<=4;i++) { tmp.pop_back(); } //13,14,15,16 for(int i=13;i<=16;i++) { tmp.push_back(i); } matrix.push_back(tmp); vector<int> result=so.PrintMatrix(matrix); so.ShowMatrix(result); system("pause"); return 0; }
在这里就分享结束了。。。
相关文章推荐
- 顺时针打印矩阵
- 面试算法(十九)顺时针打印矩阵
- 顺时针打印矩阵[算法]
- 剑指offer——面试题20:顺时针打印矩阵
- 剑指offer-题20:顺时针打印矩阵
- 顺时针打印矩阵
- 《剑指Offer》之“顺时针打印矩阵”
- 剑指Offer-顺时针打印矩阵-C++-2ms-456k
- 剑指offe:顺时针打印矩阵(最优解)——Array
- 剑指offer 面试题20 顺时针打印矩阵
- leetcode-54 Spiral Matrix 顺时针打印矩阵(《剑指offer》面试题20)
- 编程练习——顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 剑指offer 20题 【画图让抽象形象化】顺时针打印矩阵
- 20.顺时针打印矩阵
- 顺时针打印矩阵
- 数据结构与算法设计--顺时针打印矩阵
- [遇见时光]剑指offer-顺时针打印矩阵java