【剑指offer】题目20 顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:
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<int> printMatrix(vector<vector<int> > matrix) {vector<int> ans;if(matrix.empty()) return ans;int m = matrix.size();int n = matrix[0].size();int r, c;for(int k = 0; k <= (min(m, n) - 1) / 2; k++) //打印的圈数 最外圈为第0圈 {//从左到右 最上面的那条边r = k;for(c = k; c <= n - 1 - k; c++)ans.push_back(matrix[r][c]);//从上到下 最右边的那条边c = n - 1 - k;for(r = k + 1; r <= m - 1 - k; r++)ans.push_back(matrix[r][c]);//从右到左 最下面的那条边r = m - 1 - k;for(c = n - 2 - k; c >= k && r > k; c--) //需要判断与上面的边不重合ans.push_back(matrix[r][c]);//从下到上 最左边的那条边c = k;for(r = m - 2 - k; r >= k + 1 && c < n - 1 - k; r--) //需要判断与右边的边不重合
ans.push_back(matrix[r][c]); } return ans;}
转载于:https://www.cnblogs.com/dplearning/p/4635075.html
【剑指offer】题目20 顺时针打印矩阵相关推荐
- LeetCode——剑指 Offer 29【顺时针打印矩阵】
题目 剑指 Offer 29. 顺时针打印矩阵 题目概述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 限制: 0 <= matrix.length <= 100 0 & ...
- 【剑指offer】登峰造极--顺时针打印矩阵
时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 热度指数:747888 本题知识点: 数组 算法知识视频讲解 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序 ...
- 剑指offer-面试题20.顺时针打印矩阵
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字.例如: 输入一个矩阵如下: 1 1 2 3 4 2 5 6 7 8 3 9 10 11 12 4 13 14 15 16 则依次打印 ...
- 【有返回值的回溯法】剑指offer——面试题66:矩阵中的路径(回溯法)
剑指offer--面试题66:矩阵中的路径(回溯法) Solution:1 典型的回溯算法及代码 此题是回溯法的典型例题,思路以及代码均是书中所讲.要具体实现很有参考价值,借鉴之! 现在把书中代码贴在 ...
- 【剑指offer-Java版】20顺时针打印矩阵
顺时针打印矩阵:重在理解,毕竟作者分析的那个方法看起来还是蛮复杂的-所以自己写了个接地气的方法 重在逻辑的一个题,一次性完全写对还是比较困难的 public class _Q20 {public vo ...
- java剑指offer_剑指offer题目java实现
Problem2:实现Singleton模式 题目描述:设计一个类,我们只能生成该类的一个实例 1 packageProblem2;2 3 public classSingletonClass {4 ...
- 剑指Offer题目详解(CPP、JAVA)
2019.10.11更新 最近开始学习c++,在本文中增加c++的解法,并更新一部分题目的解法. 前言(2018.6.1) 虽然已经度过了艰辛的找实习的日子,到了公司实习.但依然非常怀念那段准备面试. ...
- 剑指offer题目及答案
剑指offer 最近在牛客网上刷剑指offer的题目,现将题目和答案总结如下: 1. 二维数组的查找 2. 替换空格 3. 从尾到头打印链表 4. 重建二叉树 5. 用两个栈实现队列 6. 旋转数组的 ...
- 剑指 offer 题目分析及答案
1. 前言 2. 实现 Singleton 3. 数组中重复的数字 4. 二维数组中的查找 5. 替换空格 6. 从尾到头打印链表 7. 重建二叉树 8. 二叉树的下一个结点 9. 用两个栈实现队列 ...
- 剑指offer答案 c语言,剑指offer 题目整理
合并两个排序的链表(25)[打分: 7.5/10] leetcode原题,去东京的飞机上写过.迭代好写,递归难写. 树的子结构(26) [打分: 7.5/10] leetcode原题.子树和子结构不同 ...
最新文章
- Eclipse create git repository failure(egit)
- 这是一份非常全面的开源数据集!
- Fork and Join: Java Can Excel at Painless Parallel Programming Too!---转
- 解析Linux 多应用程序docker自动部署脚本
- P1005 采药(Tyvj)
- 作者:张晴晴,山东农业大学硕士生。
- amaze ui响应式辅助
- shell 不等于_Shell 布尔运算符与逻辑运算符
- python tkinter背景图片_如何在tkinter中有背景图像和按钮?
- oracle使用小技巧,Oracle使用技巧
- 在JavaScript中使用JSON
- 并发编程学习之线程池工作原理
- 如何让图片变清晰——PS滤镜Camera Raw帮你解决
- 面向对象课程 第三次博客总结
- 【python】OpenCV—RGB, Rectangle, Circle, SS(1)
- working directory is not part of a module
- C# 怎么把集合转换成数据库添加语句,把类转换成sql语句
- 多可文档管理的数据备份
- 端口映射工具之80端口映射软件无公网IP时发布网站应用等应用
- 程序人生:Facebook的23岁创始人