网站建设的方式,国外网页模板网站,全栈网站开发流行框架,起飞页怎么做网站目录
题目#xff1a;剑指 Offer 29. 顺时针打印矩阵 - 力扣#xff08;Leetcode#xff09;
题目的接口#xff1a;
解题思路#xff1a;
代码#xff1a;
过啦#xff01;#xff01;#xff01;
写在最后#xff1a; 题目#xff1a;剑指 Offer 29. 顺时针…目录
题目剑指 Offer 29. 顺时针打印矩阵 - 力扣Leetcode
题目的接口
解题思路
代码
过啦
写在最后 题目剑指 Offer 29. 顺时针打印矩阵 - 力扣Leetcode 题目的接口
class Solution {
public:vectorint spiralOrder(vectorvectorint matrix) {}
};
解题思路
这道题的思路也比较简单
就是实现起来对边界的控制能力要求比较高
根据题意顺时针打印矩阵
先判断该矩阵是否为空
然后
我们通过控制上右下左四个边界打印。
设置四个变量作为下标访问矩阵
根据这个顺序循环
打印上边界的值然后更新上边界
打印右边界的值然后更新右边界
打印下边界的值然后更新下边界
打印左边界的值然后更新左边界
每次打印完都判断矩阵是否已经打印完成
如果矩阵已经打印完成就跳出循环
返回打印的值即可。
代码
class Solution {
public:vectorint spiralOrder(vectorvectorint matrix) {//建一个vector存放需要打印的值vectorint 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;}
};
过啦 写在最后
以上就是本篇文章的内容了感谢你的阅读。
如果喜欢本文的话欢迎点赞和评论写下你的见解。
如果想和我一起学习编程不妨点个关注我们一起学习一同成长。
之后我还会输出更多高质量内容欢迎收看。