博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【剑指offer】29、顺时针打印矩阵
阅读量:5104 次
发布时间:2019-06-13

本文共 1452 字,大约阅读时间需要 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.

思路

定下3个点,则做四次循环

1、start -> endX 

2、start+1 -> endY

3、endY-1 -> start

4、endY -> start - 1

 

取x为cols,rows中较小的,每做4次循环,x = x - 2

当 x > 0,循环才进行

start . . . endX
  . . .  
  . . .  
  . . .  
  . . . endY

 

 

 

 

 

class Solution {public:    vector
printMatrix(vector
> matrix) { vector
res; int row=matrix.size();//行数 int col=matrix[0].size();//列数 int x = min(row, col), start = 0; while ( x > 0){ int endX = col - 1 - start; int endY = row - 1 - start; for (int i = start; i <= endX; i++) res.push_back(matrix[start][i]); if( start < endY){ for (int i = start +1 ; i <= endY; i++) res.push_back(matrix[i][endX]); } if (start < endX && start < endY){ for (int i = endX - 1; i >= start; i--) res.push_back(matrix[endY][i]); } if (start < endX && start < endY - 1){ for (int i =endY - 1; i > start; i--) res.push_back(matrix[i][start]); } x = x - 2; start++; } return res; }};

 

转载于:https://www.cnblogs.com/shiganquan/p/9341341.html

你可能感兴趣的文章
jvm参数
查看>>
6个有用的MySQL语句
查看>>
我对前端MVC的理解
查看>>
Silverlight实用窍门系列:19.Silverlight调用webservice上传多个文件【附带源码实例】...
查看>>
2016.3.31考试心得
查看>>
mmap和MappedByteBuffer
查看>>
Linux的基本操作
查看>>
转-求解最大连续子数组的算法
查看>>
对数器的使用
查看>>
OracleOraDb11g_home1TNSListener服务启动后停止,某些服务在未由其他服务或程序使用时将自己主动停止...
查看>>
Redis用户添加、分页、登录、注册、加关注案例
查看>>
练习2
查看>>
【ASP.NET】演绎GridView基本操作事件
查看>>
ubuntu无法解析主机错误与解决的方法
查看>>
尚学堂Java面试题整理
查看>>
MySQL表的四种分区类型
查看>>
CLR 关于强命名程序集 .
查看>>
[BZOJ 3489] A simple rmq problem 【可持久化树套树】
查看>>
STM32单片机使用注意事项
查看>>
swing入门教程
查看>>