题目描述:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:
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.

#include<iostream>
#include<vector>using namespace std;vector<int> printMatrix(vector<vector<int> > matrix)
{vector<int>res;res.clear();int row = matrix.size();//行数int col = matrix[0].size();//列数if(row<=0&&col<=0)return res;int circle= ( (row<col? row :  col )-1 )/2+1;  //圈数for(int i=0;i<circle;i++){//从左向右打印for(int j=i;j<col-i;j++)res.push_back(matrix[i][j]);//从上往下的每一列数据if(i<row-i-1){for(int k=i+1;k<row-i;k++)res.push_back(matrix[k][col-1-i]);}//判断是否会重复打印(从右向左的每行数据)if(i<row-i-1&&i<col-i-1){for(int m=col-i-2; m>=i ;m--)res.push_back(matrix[row-i-1][m]);}//判断是否会重复打印(从下往上的每一列数据)if( i<col-i-1&&i<row-i-2 ){for(int n=row-i-2;n>i;n--)res.push_back(matrix[n][i]);}}return res;
}void Print_vec(vector<vector<int>> vec)
{if (vec.empty()){cout << "The vector is empty!" << endl;return;}for (int i = 0; i < vec.size(); i++){for(int j = 0; j < vec[0].size(); j++)cout << vec[i][j] << " ";cout << endl;}
}vector<vector<int>> Initialize_vec(int rows, int cols)
{vector<vector<int>> vec( rows);for (int i = 0; i < vec.size(); i++)vec[i].resize(cols);for(int i = 0; i < vec.size(); i++){for (int j = 0; j < vec[0].size();j++){vec[i][j] = (i)*vec[0].size()+j+1;}}return vec;
}
int main()
{vector<vector<int>> myvec=Initialize_vec(5, 2);Print_vec(myvec);cout<<endl;cout<<"打印后:"<<endl;vector <int> newvec=printMatrix(myvec) ;if (newvec.empty()){cout << "The vector is empty!" << endl;return 0;}for (int i = 0; i < newvec.size(); i++){cout << newvec[i] << " ";}return 0;
}

运行结果为:

1 2
3 4
5 6
7 8
9 10打印后:
1 2 4 6 8 10 9 7 5 3
Process returned 0 (0x0)   execution time : 0.073 s
Press any key to continue.

《剑指offer》面试题20——顺时针打印矩阵(C++)相关推荐

  1. 剑指offer面试题[20]-顺时针打印矩阵

    题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2, ...

  2. 剑指offer面试题29. 顺时针打印矩阵(边界问题)

    题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 思路 详见链接 代码 class Solution:def spiralOrder(self, matrix:[[int]]) ...

  3. 剑指offer十九之顺时针打印矩阵

    一.题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2, ...

  4. 【剑指offer-Java版】20顺时针打印矩阵

    顺时针打印矩阵:重在理解,毕竟作者分析的那个方法看起来还是蛮复杂的-所以自己写了个接地气的方法 重在逻辑的一个题,一次性完全写对还是比较困难的 public class _Q20 {public vo ...

  5. java程序输出88的0 1矩阵_《剑指Offer》Java实现--顺时针打印矩阵

    题目描述 输入一个矩阵,按照从外向里顺时针的顺序打印出每一个数字.测试用例如下图: 测试数组 思路分析 这道题目并不难,关键在于边界控制!每一层遍历均从左上角开始,逐层往里完成遍历. Java代码实现 ...

  6. 剑指offer(19)顺时针打印矩阵

    题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2, ...

  7. 剑指offer——面试题20:顺时针打印矩阵

    剑指offer--面试题20:顺时针打印矩阵 Solution1: 可参考leetCode 54题的解法 书上的思路特别好,学习之~ class Solution { public:vector< ...

  8. (补充)【打印1到最大的n位数】剑指offer——面试题12:打印1到最大的n位数

    剑指offer--面试题12:打印1到最大的n位数 此题在牛客网上没有OnlineJudge,在此补充两种做法. 参考网址:https://blog.csdn.net/yanxiaolx/articl ...

  9. java 打印_剑指Offer面试题20(Java版):顺时针打印矩阵

    题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字.例如:如果输入如下矩阵: 1,2,3,4 5,6,7,8 9,10,11,12 13,14,15,16 则依次打印出数字1,2,3, ...

  10. 剑指offer-面试题20.顺时针打印矩阵

    题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字.例如: 输入一个矩阵如下: 1 1 2 3 4 2 5 6 7 8 3 9 10 11 12 4 13 14 15 16 则依次打印 ...

最新文章

  1. 安卓四大组件之Service
  2. wxpython界面切换_Python图形界面—wxPython库的布局管理及页面切换
  3. 你可以通过这13种方法帮助Linux发展
  4. Java异常处理-----java异常体系
  5. The Clean Architecture--一篇很不错的关于架构的文章
  6. javaweb实训第二天上午——jQuery基础
  7. Altium Designer20下绘制封装、布局、布线及裁板等操作
  8. MES系统供应商评估报告-- Gartner出品
  9. 如何安装和使用easypanel
  10. SPA单页面首屏加载慢怎么解决???
  11. 交易总额高达600亿美元?亚马逊、微软和谷歌完成100多笔并购
  12. Android:安卓实现高考倒计时功能
  13. Windows下强制删除文件的批处理文件
  14. CodeForces 332B Maximum Absurdity(线段树单点更新)
  15. android 4.4 x86 iso,安卓x86 4.4 iso下载
  16. 【Python】某商店T恤的价格为35元/件(2件9折,3件以上8折)裤子的价格为120元/条(2条以上9折).小明在该店买了3件T恤和2条裤子,请计算并显示小明应该付多少钱?
  17. 【实习_面试全程辅导分享】简历篇
  18. 中考前 OI 生涯总结
  19. sqlmap安装及简单使用实例
  20. RS485使用Modbus原理

热门文章

  1. 页面布局_【三十七集】页面布局中的视觉流
  2. linux服务器数据备份到本地硬盘_如何备份硬盘数据,最简单的方法是什么?
  3. mac搜索不到wifi wtg_如何设置隐藏wifi 防止蹭网隐藏wifi方法【详解】
  4. vba 自动排序_Excel表格自动排序,神了!
  5. e盾服务端源码_学习ZooKeeper源码,就从这篇开始吧
  6. php mysql随机抽奖源码_PHP随机按百分比抽奖
  7. Javascript:js借助jQuery和fileSave将表格存储到world
  8. Java Swing的进化
  9. Cesium整体架构介绍
  10. 如何在ROS环境中解码.bag格式数据