顺时针打印矩阵
来源:互联网 发布:电脑安全上网软件 编辑:程序博客网 时间:2024/05/18 13:24
今天在牛客网的剑指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。
二.题目分析
用左上和右下的坐标定位出一次要旋转和打印的数据,然后修改坐标定位,具体分析如下:![顺时针打印矩阵描述](http://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;}
在这里就分享结束了。。。
1 1
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 矩阵顺时针打印
- 顺时针打印矩阵
- 顺时针打印矩阵[算法]
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 牛客前端技能挑战
- 剑指offer(C++)——按之字形顺序打印二叉树
- 计算机网路基础
- CMake与Make
- jsp文件引用问题
- 顺时针打印矩阵
- 慕课BIT嵩老师爬虫课笔记
- 7.Unity3D商业游戏源码研究-变身吧主公-SceneLoding
- 数据模型
- 03 Opencv部分经典例程赏析
- [bzoj]1042: [HAOI2008]硬币购物
- BZOJ 2742: [HEOI2012]Akai的数学作业
- 交换两个变量的值的swap函数
- PID算法完全讲解