【LeetCode】剑指 Offer(11)
创始人
2024-05-27 08:47:23
0

目录 

题目:剑指 Offer 29. 顺时针打印矩阵 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过啦!!!

写在最后:


题目:剑指 Offer 29. 顺时针打印矩阵 - 力扣(Leetcode)

题目的接口:

class Solution {
public:vector spiralOrder(vector>& matrix) {}
};

解题思路:

这道题的思路也比较简单,

就是实现起来对边界的控制能力要求比较高,

根据题意顺时针打印矩阵,

先判断该矩阵是否为空;

然后,

我们通过控制上右下左四个边界打印。

(设置四个变量作为下标访问矩阵)

根据这个顺序循环:

打印边界的值,然后更新边界;

打印边界的值,然后更新边界;

打印边界的值,然后更新边界;

打印边界的值,然后更新边界;

每次打印完都判断矩阵是否已经打印完成,

如果矩阵已经打印完成,就跳出循环,

返回打印的值即可。

代码:

class Solution {
public:vector spiralOrder(vector>& matrix) {//建一个vector存放需要打印的值vector v;//判断矩阵是否为空if(matrix.size() == 0){return v;}//控制边界://上边界int top = 0;//下边界int bottom = matrix.size() - 1;//左边界int left = 0;//右边界int right = matrix[0].size() - 1;//循环打印矩阵while(1){//从左往右for(int i = left; i <= right; i++){v.push_back(matrix[top][i]);}//更新上边界,并判断是否打印完成if(++top > bottom){break;}//从上往下for(int i = top; i <= bottom; i++){v.push_back(matrix[i][right]);}//更新右边界,并判断是否打印完成if(--right < left){break;}//从右往左for(int i = right; i >= left; i--){v.push_back(matrix[bottom][i]);}//更新下边界,并判断是否打印完成if(--bottom < top){break;}//从下往上for(int i = bottom; i >= top; i--){v.push_back(matrix[i][left]);}//更新左边界,并判断是否打印完成if(++left > right){break;}   }//返回return v;}
};

过啦!!!

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果喜欢本文的话,欢迎点赞和评论,写下你的见解。

如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。

之后我还会输出更多高质量内容,欢迎收看。

相关内容

热门资讯

【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
AsusVivobook无法开... 首先,我们可以尝试重置BIOS(Basic Input/Output System)来解决这个问题。...
ASM贪吃蛇游戏-解决错误的问... 要解决ASM贪吃蛇游戏中的错误问题,你可以按照以下步骤进行:首先,确定错误的具体表现和问题所在。在贪...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...