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

LeetCode 54. 螺旋矩阵

题目链接

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

题目解析

        1、求出当前矩阵左上角的元素和右下角的元素。

        2、根据这两个元素来确定我们需要遍历的具体位置。

        3、当遍历完一圈的时候更新左上角元素和右下角元素。

细节:

        当遍历最后一行的时候需要满足x1<x2因为若x1==x2最后一行就没有需要打印的数据了,因为仅剩的一个元素已经在最后一列打印过了。

        当遍历第一列的时候需要满足y1<y2因为若y1==y2第一列就没有需要打印的数据了,因为仅剩的一个元素已经在最后一列打印过了。        

代码

class Solution 
{// 画图去分析边界情况
public:vector<int> spiralOrder(vector<vector<int>>& matrix){// m行n列int m=matrix.size();int n=matrix[0].size();vector<int> ret;// 左上角的元素 (x1,y1)// 右上角的元素 (x2,y2)int x1=0,y1=0;int x2=m-1,y2=n-1;while(x1<=x2&&y1<=y2){// 第一行for(int i=y1;i<=y2;i++)ret.push_back(matrix[x1][i]);// 最后一列for(int i=x1+1;i<=x2;i++)ret.push_back(matrix[i][y2]);// 最后一行// 若x1==x2最后一行就没有需要打印的数据了,因为仅剩的一个元素已经在最后一列打印过了if(x1<x2){for(int i=y2-1;i>=y1;i--)ret.push_back(matrix[x2][i]);}// 第一列// 若y1==y2第一列就没有需要打印的数据了,因为仅剩的一个元素已经在第一行打印过了if(y1<y2){for(int i=x2-1;i>=x1+1;i--)ret.push_back(matrix[i][y1]);}x1++;y1++;x2--;y2--;}return ret;}
};

http://www.lryc.cn/news/171068.html

相关文章:

  • 每天几道Java面试题:集合(第四天)
  • 【论文解读】Faster sorting algorithm
  • latexocr安装过程中遇到的问题解决办法
  • 如何判断linux 文件(或lib)是由uclibc还是glibc编译出来的?
  • WorkPlus | 好用、专业、安全的局域网即时通讯及协同办公平台
  • ARM Linux DIY(十二)NES 游戏
  • MOEA算法的背景知识
  • 【rtp-benchmarks】读取本地文件基于uvgRtp实现多线程发送
  • fire-voc 火光 烟火 火灾 目标检测数据集
  • 【力扣1462】课程表(拓扑排序+bitset优化到O(n))
  • 【AI】机器学习——支持向量机(非线性及分析)
  • 2023-09-20 LeetCode每日一题(拿硬币)
  • Java21的新特性
  • 测试-----selenuim webDriver
  • 21天学会C++:Day12----初始化列表
  • OpenAI开发系列(二):大语言模型发展史及Transformer架构详解
  • Gson - 一个Java序列化/反序列化库
  • 6-1 汉诺塔
  • Linux之initd管理系统(海思、ZYNQ、复旦微)添加密码登录验证
  • 怎么更改代理ip,代理ip如何切换使用?
  • 【C++从0到王者】第三十三站:AVL树
  • 手机机型响应式设置2
  • uni-app 之 解决u-button始终居中问题
  • Python日期处理库:掌握时间的艺术
  • JOSEF约瑟 智能电流继电器KWJL-20/L KWLD26 零序孔径45mm 柜内导轨式安装
  • NLP技术如何为搜索引擎赋能
  • 演唱会没买到票?VR直播为你弥补遗憾
  • myabtis的缓存级别
  • gin框架再探
  • 经典算法-----约瑟夫问题(C语言)