剑指offer(19): 顺时针打印矩阵
题目描述
class Solution { public:vector<int> printMatrix(vector<vector<int> > matrix) {vector<int> result;if(matrix.empty())return result;int row_length = matrix.size();if(row_length == 1)return matrix[0];int col_length = matrix[0].size();int start_row = 0, start_col = 0;while(row_length || col_length){int current_row = start_row, current_col = start_col; // 每一次输出一圈,开头的坐标为(0,0),(1,1).... // 输出上边→(row不变, col逐渐增加到最大)for(int j = 0; j < col_length; j++){result.push_back(matrix[current_row][current_col++]);}current_col--; // 越界,通过自减恢复row_length--; // 已经打印完一行if(!row_length) break; current_row++; // 从右上角的坐标往下移动一格 // 输出右边 ↓(col不变, row逐渐增加到最大) for(int i = 0; i < row_length; i++){result.push_back(matrix[current_row++][current_col]);}current_row--; // 越界,恢复col_length--; // 打印完一列if(!col_length) break;current_col--; // 下边 ←(row不变, col逐渐减小到最小)for(int j = 0; j < col_length; j++){result.push_back(matrix[current_row][current_col--]);}current_col++;row_length--;if(!row_length) break;current_row--; // 左 ↑(col不变,row逐渐减小到最小)for(int i = 0; i < row_length; i++){result.push_back(matrix[current_row--][current_col]);}current_row++;col_length--;if(!col_length) break; // 下一圈起点start_row++;start_col++;}return result;} };
转载于:https://www.cnblogs.com/heifengli/p/11260503.html
剑指offer(19): 顺时针打印矩阵相关推荐
- 《LeetCode力扣练习》剑指 Offer 29. 顺时针打印矩阵 Java
<LeetCode力扣练习>剑指 Offer 29. 顺时针打印矩阵 Java 一.资源 题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matr ...
- 【剑指offer】顺时针打印矩阵
转载请注明出处:http://blog.csdn.net/ns_code/article/details/26053049 剑指offer上的第20题,九度OJ上測试通过. 题目描写叙述: 输入一个矩 ...
- 剑指 Offer 29. 顺时针打印矩阵
题目 剑指offer的解题思路 顺时针打印矩阵,可以分解为每次打印一个数,顺序是从左到右,从上到下,然后从右到左,从下到上. 打印每一圈的起点(startX,startY)分别为(0,0),(1,1) ...
- 【完整可运行代码】剑指 Offer 29. 顺时针打印矩阵
立志用最少的代码做最高效的表达 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 示例 1: 输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2, ...
- 打印矩阵 java_【Java】 剑指offer(29) 顺时针打印矩阵
本文参考自<剑指offer>一书,代码采用Java语言. 题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 思路 每次打印矩阵最外面的一圈(用方法printMatrix ...
- 剑指offer:顺时针打印矩阵
题目 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1 ...
- 剑指offer——29.顺时针打印矩阵(不熟)
题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字 ...
- 【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 题意 输入一 ...
- 剑指offer 29 顺时针打印矩阵(可逆时针,任一点开始)
原书上写的解太麻烦了,而且还没有扩展性(比如从右上角开始打印,或者逆时针打印). 此外多个for循环的起止点也让人头晕,每个方向都要单独判断步进方向,因此代码也缺少优雅性. 这里我用direction ...
最新文章
- 超声波测距测速升压可调中周倒车雷达变频器传感器1:10
- php模板技术smarty,PHP模板技术Smarty
- 【python】openstack管理小工具(增删查改,批量ping)
- HALCON标定板简介
- C++对类(或者结构体)中字符数组赋值时,出现表达式必须是可修改的左值的问题
- java软件测试方法有哪些方法有哪些方法_软件测试方法和软件测试规则
- 折腾Java设计模式之状态模式
- [模板]线性筛素数(欧拉筛法)
- 静态方法与实例方法的区别
- AnsiString用法(转)
- android测试工具Demo,Android 测试工具,实时抓被测app crash实现思路
- mysql 驱动jar包下载_mysql驱动jar包
- 记 * 恢复ext4硬盘的数据
- 大一c语言常见编程题,大一c语言考试复习题
- can总线配置读入是什么意思_CAN总线系列讲座第七讲——CAN总线地址设置详解
- HTML5 屏幕适配笔记
- Elasticsearch安装操作步骤
- 重新理解创业:一个创业者的中途思考
- 互联网快讯:粉笔科技双核驱动实现突围;猿辅导以科技助力教育提质增效;抖音升级谣言专项治理
- JavaSocket编程之Netty框架线程模型
热门文章
- 【机器学习入门到精通系列】推荐系统之协同过滤算法
- python【蓝桥杯vip练习题库】ALGO-118连续正整数的和(枚举优化)
- 装Linux后分区丢失,找到了linux分区顺序错乱修复方法
- 网络推广外包没有效果?很可能是在网络推广外包基础上出现问题!
- 网络营销——网络营销专员浅析网站推广营销关键词是重点
- 网站更新的文章如何被百度快速收录?
- 网站优化中能有效提升网站打开速度的技巧有哪些?
- irobot擦地机器人故障_iRobot擦地机器人:只会擦地并不“奢侈”
- ida android sign加密,最右sign-v2签名算法追踪及逆向还原
- 日元兑换——国内兑换需要护照和签证,国外的机场有兑换ATM