当前位置:首页 » 《随便一记》 » 正文

【LeetCode】剑指 Offer(11)

18 人参与  2023年03月31日 15:29  分类 : 《随便一记》  评论

点击全文阅读


目录 

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

题目的接口:

解题思路:

代码:

过啦!!!

写在最后:


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

题目的接口:

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

解题思路:

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

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

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

先判断该矩阵是否为空;

然后,

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

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

根据这个顺序循环:

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

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

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

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

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

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

返回打印的值即可。

代码:

class Solution {public:    vector<int> spiralOrder(vector<vector<int>>& matrix) {        //建一个vector存放需要打印的值        vector<int> 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;    }};

过啦!!!

写在最后:

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

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

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

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


点击全文阅读


本文链接:http://zhangshiyu.com/post/57596.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1