当前位置: 首页 > news >正文

在做题中学习(89):螺旋矩阵

解法:模拟

思路:创建ret数组,用变量标记原矩阵的行数和列数,遍历一个元素就push_back进ret数组,每次遍历完一行或一列,相应行/列数--,进行顺时针螺旋遍历到为0即可。

细节:要有边界条件的判断,因为要保证 rows>0 && cols > 0,while循环中的某次for结束将对应rows-- 到0 / cols--到0,后面再继续就会出问题,解决方法就是再加一层if判断即可。

附上完整代码:

class Solution 
{
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) 
    {
        vector<int> ret;
        int rows = matrix.size(),cols = matrix[0].size();
        int a = 0,b = -1;
        while(rows > 0 && cols > 0)   
        {
            for(int i = 0;i<cols;i++)
                ret.push_back(matrix[a][++b]);
            rows--;

            for(int i = 0;i<rows;i++)
                ret.push_back(matrix[++a][b]);
            cols--;

            if(rows > 0)
            {
                for(int i = 0;i<cols;i++)
                    ret.push_back(matrix[a][--b]);
                rows--; 
            }

            if(cols > 0)
            {
                for(int i = 0;i<rows;i++)
                    ret.push_back(matrix[--a][b]);
                cols--;
            }
        }
        return ret;
    }
};

相关文章:

  • 52款独特婚礼主题手绘水彩花卉树叶高清png免抠图设计素材Floria – Botanical Elements
  • 外贸订货系统如何凭借多语言交互界面,助力企业敲开全球市场大门
  • 动静态链接与加载
  • 【数据挖掘】--算法
  • 网络安全-攻击流程-用户层
  • 【洛谷】P1886 滑动窗口 /【模板】单调队列,经典!
  • 基于SpringBoot+vue粮油商城小程序系统
  • I2c的上拉电阻,不加可以吗
  • Unity FBXExport导出的FBX无法在Blender打开
  • SpringSecurity请求流转的本质
  • 时间盲注,boolen盲注,获取表、列、具体数据的函数
  • Python基于循环神经网络的情感分类系统(附源码,文档说明)
  • C++17并行化加速STL算法——std::execution
  • Perplexity 开源DeepSeek-R1 模型新版本 R1-1776
  • Angular 组件开发——组件的创建与交互
  • 如何选择免费进销存系统?推荐清单与关键考量
  • 整理一些安装环境的常用命令
  • 【机器学习】CNN与Transformer的表面区别与本质区别
  • 基于大牛直播SDK的Android平台低延迟RTSP|RTMP播放与录像技术实践
  • 社交编码|结对编程
  • 秦洪看盘|交易型资金收缩,释放短线压力
  • 以总理内塔尼亚胡称决心彻底击败哈马斯
  • 比尔·盖茨:未来20年通过盖茨基金会捐出几乎全部财富,2045年底基金会停止运营
  • 乡村快递取件“跑腿费”屡禁不止?云南元江县公布举报电话
  • 谜语的强制力:弗洛伊德与俄狄浦斯
  • 暴雨及强对流天气黄色预警已发布!南方进入本轮降雨最强时段