【剑指Offer】顺时针打印矩阵
发布日期:2022-02-10 08:55:12
浏览次数:30
分类:技术文章
本文共 1471 字,大约阅读时间需要 4 分钟。
题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.
思路
主要是得画图把顺序理解清楚,详细画图见书上说明。
注意三种特殊情况,即最后一圈到底是打印几次。
思路2
- 向右走存入整行的值,当存入后,该行再也不会被遍历,代表上边界的 up 加一,同时判断是否和代表下边界的 down 交错
- 向下走存入整列的值,当存入后,该列再也不会被遍历,代表右边界的 right 减一,同时判断是否和代表左边界的 left 交错
- 向左走存入整行的值,当存入后,该行再也不会被遍历,代表下边界的 down 减一,同时判断是否和代表上边界的 up 交错
- 向上走存入整列的值,当存入后,该列再也不会被遍历,代表左边界的 left 加一,同时判断是否和代表右边界的 right 交错
思路3
转矩阵
1.吸收第一行,并将第一行从矩阵中去掉,2.将矩阵“变相转置”(这里的转置可以理解为将矩阵从地上立起来,比如矩阵是【【1,2,3】, 【4,5,6】】 将它“变相转置”(立起来)为 【【3,6】,【2,5】,【1,4】】 )3.重复以上两步,直到将第一行去掉之后矩阵为空。代码
class Solution {public: vector res; vector printMatrix(vector> matrix) { if(matrix.size() == 0){ return res; } int rows = matrix.size(); int columns = matrix[0].size(); int start = 0; while(rows > start*2 && columns > start*2){ printMatrixCircle(matrix,start); start++; } return res; } void printMatrixCircle(vector > matrix,int start){ int rows = matrix.size(); int columns = matrix[0].size(); int endx = columns-1-start; int endy = rows-1-start; for(int i = start;i <= endx;i++){ res.push_back(matrix[start][i]); } if(start = start;i--){ res.push_back(matrix[endy][i]); } } if(start = start+1;i--){ res.push_back(matrix[i][start]); } } }};
转载地址:https://blog.csdn.net/hanmin822/article/details/105526976 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年03月27日 15时54分45秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
算法的设计
2019-04-27
LiveGBS支持万级以上设备GB28181设备|平台接入互联网无插件直播
2019-04-27
利用websocket进行高性能的GB28181语音对讲前端代码
2019-04-27
【mysql】分组排序赋值
2019-04-27
【jmeter】Arrivals Thread Group
2019-04-27
【接口平台】测试计划执行效率优化
2019-04-27
【Furion】执行的csv文件未找到
2019-04-27
【调优案例】druid testOnBorrow参数问题
2019-04-27
【jmeter】dubbo接口java.util.List<MyClassVo>参数
2019-04-27
【selenium】ide录制二次开发
2019-04-27
【场景构造】并发抢答场景
2019-04-27
【appium】linux环境安装部署
2019-04-27
【linux】文件拷贝到linux系统
2019-04-27
【调优案例】调优问题总结
2019-04-27
【软件性能测试与调优实践】性能测试、分析与调优基础
2019-04-27
【Furion】Elasticsearch的数据读写
2019-04-27
【并发编程的艺术】并发编程的挑战
2019-04-27
【并发编程的艺术】并发机制原理
2019-04-27
【Furion】平台架构演进
2021-06-30