一:题目

二:上码

class Solution {public:/**思路:1.1  2  3  45  6  7  89  10 11 1213 14 15 162.我们模拟顺时针的顺序,那么得分为4步 上面得一行   (1,2,3)左面得一行   (4,8,12)下面得一行   (16,15,14)右面得一行   (13,9,5)可以看到我们在取数字得时候,我们是每次只取出3个,也就是左闭右开那么这只是一圈,我们需要统计出圈数,那么圈数和什么有关呢?圈数 = min(行/2,列/2);3.模拟完圈数我们还应该考虑一个问题,那就是我们应该考虑中间的数1>:当行多列少的时候  列不能为偶数 否则就是完整的圈数2>:当列多 行少的时候   行不能为偶数  否则就是完整的圈数3>:当行==列的时候  中间就剩下一个数.*/vector<int> spiralOrder(vector<vector<int>>& matrix) {int n = matrix.size();//行数int m = matrix[0].size();//列数int loop = min(m/2,n/2);//圈数int border = 1;//边界int startx = 0,starty = 0;int i,j;vector<int> ans;while(loop--) {i = startx;//每圈的起点j = starty;//每圈的起点//最上面的一行 开始为 starty 表示的是我们的行不变 列在变//我们取的是左闭右开  那么我们边界条件是  m - border(其中border随着圈数的增加而增加)for ( ; j < m - border; j++) {ans.push_back(matrix[i][j]);}//最右面的一行 列不变  行在变 (这里的列 j 是拿上个for循环的)for ( ; i < n - border; i++) {ans.push_back(matrix[i][j]);}//最下面的一行 行不变列在变(这里的j 是第一个for循环的j  i 是第二个for循环中的 i)for ( ; j > starty; j--) {ans.push_back(matrix[i][j]);}//最右面的一行 列不变  行在变 (这里的 i 和 j 都是上面for循环的)for ( ; i > startx; i--) {ans.push_back(matrix[i][j]);}startx++;starty++;border++;//边界不一样了 }//处理行数 列数 中存在奇数的情况 就是导致我们的去圈数不完整的情况//当行数比列数要多的时候  列数为奇数的话 那么圈数不完整//当行数比列数要少的时候  行数为奇数的话  那么圈数不完整//当行数 == 列数 且都为奇数的话  那么只处理最中间的数即可//这里我们在处理的时候我们是处理的是 startx 和 starty 因为我们反正我们是 顺时针模拟的//我们的startx 和 starty是一直变化的, 我们的边界的话 是需要左闭右闭的  所以我们 // 减去 border后就又加一了.if (n > m && m % 2 != 0) {//剩下竖着的一列  列不变行在变for ( ; startx < n - border +1; startx++) ans.push_back(matrix[startx][starty]);} else if (n < m && n % 2 != 0) { //剩下横着的一行  行不变列在变for ( ; starty < m - border+1; starty++) ans.push_back(matrix[startx][starty]);} else if (m == n && m % 2 != 0) {//int mid = m/2;ans.push_back(matrix[mid][mid]);}return ans;}
};

leetcode54. 螺旋矩阵(详解)相关推荐

  1. LDF转Excel;LDF转位定义;Excel转LDF;Excel转位定义;MatrixCreat(一)之LIN矩阵详解

    LIN矩阵详解 一.摘要 1.描述 2.关键字 二.什么是LIN 1.发展历史 2.子网与节点 3.主/从机节点与主/从机任务 4.特点 5.帧的结构 6.调度表 三.LIN矩阵 1.矩阵表 2.报文 ...

  2. python混淆矩阵,详解使用python绘制混淆矩阵(confusion_matrix)

    这篇文章主要介绍了详解使用python绘制混淆矩阵(confusion_matrix),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学 ...

  3. Android复习14【高级编程:推荐网址、抠图片上的某一角下来、Bitmap引起的OOM问题、三个绘图工具类详解、画线条、Canvas API详解(平移、旋转、缩放、倾斜)、矩阵详解】

    目   录 推荐网址 抠图片上的某一角下来 8.2.2 Bitmap引起的OOM问题 8.3.1 三个绘图工具类详解 画线条 8.3.16 Canvas API详解(Part 1) 1.transla ...

  4. leetcode-54 螺旋矩阵

    题目: 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 示例 1: 输入: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, ...

  5. 计算机视觉和图形学中的摄像机内参数矩阵详解

    在计算机视觉和图形学中都有"摄像机内参数矩阵"这个概念,其含义大致相同,但在实际使用过程中,这两个矩阵却相差甚远.在增强现实中,为了使计算机绘制的虚拟物体和真实环境图像对其,需要令 ...

  6. pythonnumpy矩阵详解_python常用模块numpy解析(详解)

    numpy模块 关注公众号"轻松学编程"了解更多. 以下命令都是在浏览器中输入. cmd命令窗口输入:jupyter notebook 后打开浏览器输入网址http://local ...

  7. 3D游戏开发中的矩阵详解

    矩阵很多同学没有接触过,所以感觉很难,很复杂,其实只要学过矩阵的同学都知道,矩阵运算并不难.今天我们给大家讲讲游戏开发中的矩阵的运算. 这里有个游戏开发交流小组 大家可以一起来学习交流哦 1:矩阵是什 ...

  8. leetcode54:螺旋矩阵

    一:题目 二:上码 class Solution {public:vector<int> spiralOrder(vector<vector<int>>& ...

  9. 【CG】针孔相机矩阵(Camera Matrix)详解

    0. 相机矩阵 Camera Matrix 小孔成像模型 成像过程 1. 相机矩阵的分解 齐次坐标下,物体的物理坐标是 [x,y,z,1]′ [ x , y , z , 1 ] ′ [x,y,z,1] ...

最新文章

  1. 方便的boost_python
  2. “主要的编程范型”及其语言特性关系(多图)
  3. StringBuffer append整数0001的问题
  4. windows下curl
  5. C# 语言规范_版本5.0 (第15章 委托)
  6. 转: Nginx proxy讲解精华文章集
  7. 2020年考研准考证打印下载及注意事项
  8. c语言程序开发分为四个步骤,c语言程序开发的步骤
  9. 如何修改注册表的计算机名称,如何修改注册表【图文】
  10. php关闭notice_php的notice怎么关闭
  11. 【基于物理的渲染(PBR)白皮书】(三)迪士尼原则的BRDF与BSDF相关总结
  12. LoadBalancer整合springboot
  13. 我有博客了,泪流满面
  14. 科目二上车前的基础说明
  15. 【综述】A Comprehensive Survey on Graph NeuralNetworks(4)
  16. 【Web UI自动化测试】Web UI自动化测试之日志收集篇(全网最全)
  17. java 麻将的发牌与洗牌_JAVA程序设计(11)-----面对对象初级设计 麻将 创建麻将牌 然后洗牌 发牌~ 恩 就这样...
  18. 图文一键生成短视频工具
  19. 2021-2027全球与中国电动汽车电子水泵市场现状及未来发展趋势
  20. Apache Solr 中文分词

热门文章

  1. C#跨平台物联网通讯框架ServerSuperIO(SSIO)
  2. MySQL - 触发器
  3. 【ArcGIS遇上Python】ArcGIS Python批处理入门到精通实用教程目录
  4. Android之Caused by: java.lang.IllegalArgumentException: Failed to find configured root that contains
  5. 计算机辅助翻译的启示,翻译单位研究对计算机辅助翻译启示.PDF
  6. mysql 未找到命令_MySQL主从复制配置说明,一文教你搞懂数据库主从复制
  7. sql跨表查询_跨表更新,看到自己写的SQL像个憨憨
  8. 中国代工厂的困惑:把大牌t恤卖到99块3件,还会有人买吗?
  9. 中科大量子计算机科学家,中国科学院量子信息重点实验室
  10. linux主线程结束 子线程还能运行么,linux主线程和子线程