题目:

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

知识点:

  • 利用vector构建二维数组时,vec.size()是行数;

注意:

  • 注意打印的界限,从右往左、从下往上打印时判断是否重复

代码实现:

1.先确定需要循环多少圈才能实现全部遍历一遍
2.每圈打印(从左到右,上到下、右到左(重复否)、下到上(重复否))

/*顺时针打印矩阵*/
vector<int> printMatrix(vector<vector<int> > matrix) {vector<int> res;res.clear();int rows = matrix.size();int cols = matrix[0].size();// 计算要循环几圈int circles = ((rows < cols ? rows : cols) - 1) / 2 + 1;//按圈数打印for (int i = 0; i < circles; i++) {//从左向右打印for (int j = i; j <= cols - i - 1; j++)res.push_back(matrix[i][j]);//从上向下for (int k = i + 1; k <= rows - i - 1; k++)res.push_back(matrix[k][cols-i-1]);//从右到左(还要避免重复)for (int m = cols - i - 2; (m >= i) && (rows - i - 1 != i); m--)res.push_back(matrix[rows - i - 1][m]);//从下到上(还要避免重复)for (int n = rows - i - 2; (n >= i + 1) && (cols - i - 1 != i);n--)res.push_back(matrix[n][i]);}return res;}
}int main()
{   vector< vector<int> > vec(4, vector<int>(4));//赋值int i, j;int num = 1;for (i = 0; i < vec.size(); i++){for (j = 0; j < vec[i].size(); j++){vec[i][j] = num++;}}//打印vector<int> res = printMatrix(vec);vector<int>::iterator it;for (it = res.begin(); it != res.end(); ++it)cout << *it << " ";getchar();return 0;
}

剑指offer——29.顺时针打印矩阵(不熟)相关推荐

  1. 《LeetCode力扣练习》剑指 Offer 29. 顺时针打印矩阵 Java

    <LeetCode力扣练习>剑指 Offer 29. 顺时针打印矩阵 Java 一.资源 题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matr ...

  2. 剑指 Offer 29. 顺时针打印矩阵

    题目 剑指offer的解题思路 顺时针打印矩阵,可以分解为每次打印一个数,顺序是从左到右,从上到下,然后从右到左,从下到上. 打印每一圈的起点(startX,startY)分别为(0,0),(1,1) ...

  3. 打印矩阵 java_【Java】 剑指offer(29) 顺时针打印矩阵

    本文参考自<剑指offer>一书,代码采用Java语言. 题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 思路 每次打印矩阵最外面的一圈(用方法printMatrix ...

  4. 【完整可运行代码】剑指 Offer 29. 顺时针打印矩阵

    立志用最少的代码做最高效的表达 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2, ...

  5. 【leetcode】剑指 Offer 29. 顺时针打印矩阵(shun-shi-zhen-da-yin-ju-zhen-lcof)(模拟)[简单]

    链接 https://leetcode-cn.com/problems/shun-shi-zhen-da-yin-ju-zhen-lcof/ 耗时 解题:38 min 题解:10 min 题意 输入一 ...

  6. 剑指offer 29 顺时针打印矩阵(可逆时针,任一点开始)

    原书上写的解太麻烦了,而且还没有扩展性(比如从右上角开始打印,或者逆时针打印). 此外多个for循环的起止点也让人头晕,每个方向都要单独判断步进方向,因此代码也缺少优雅性. 这里我用direction ...

  7. 【算法】剑指 Offer 29. 顺时针打印矩阵

    1,概述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matrix = [[1,2,3],[4,5,6

  8. 剑指Offer(29)顺时针打印矩阵

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

  9. leetcode剑指 Offer 29. 顺时针打印矩阵

    一:题目 二:上码 class Solution {public:vector<int> spiralOrder(vector<vector<int>>& ...

最新文章

  1. js实现txt/excel文件下载
  2. (chap6 Http首部) 响应首部字段 Accept-RangeAge Etag
  3. raft论文 中文 pdf_八篇论文总结BERT+KG:预训练模型与知识图谱相结合的研究进展...
  4. cron引起inode节点用光的情况
  5. NeurIPS 2021 | 华为诺亚Oral论文:基于频域的二值神经网络训练方法
  6. 搭建hadoop开发环境--基于xp+cygwin
  7. obs命令行工具obsutil的使用测试
  8. Zabbix agent 在windows上安装部署
  9. #Qt#QListView的两种用法,亲测有效
  10. 获取mac电脑最高权限
  11. 渗透利器BurpSuite简介
  12. 如何快速备份linux文件夹?【高效】
  13. Homebridge 插件编写
  14. vue2 使用富文本插件 vue-tinymce(tinymce)
  15. 编译原理(龙书):第四章部分题目参考答案
  16. 无密码身份验证如何保障用户隐私安全?
  17. IndieLib开源游戏引擎第一篇中文介绍
  18. python plt输出eps图片打开后显示空白
  19. wechat-0022,微信公众号,接收事件推送
  20. 五、按姓名查询的JSP+jdbc+Servlet

热门文章

  1. Android Broadcast 和 BroadcastReceiver的权限限制
  2. c++11 数值类型和字符串的相互转换
  3. 随机产生13个0~51不同的随机数 -思想(定义参考系)
  4. hdu 5144 NPY and shot(三分)
  5. 找工作经验之——准备工作
  6. zTree实现地市县三级级联报错(一)
  7. SharePoint【Site Definition 系列】-- 04. 相对快捷地创建List Definition的Schema.xml文件
  8. inputtextarea表单提示文字
  9. SuseLinux详解(1)——设置开机启动为命令行模式
  10. 探索数据可视化,业务数据是核心