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

摄影行业网站诚信网站备案

摄影行业网站,诚信网站备案,做网站通栏模糊,太原seo哪家好快一个月没刷题了,最近工作有些忙,今天闲下来两小时,刷一道 题目描述 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1,2,3],[4…

快一个月没刷题了,最近工作有些忙,今天闲下来两小时,刷一道

题目描述

给你一个 mn 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

示例 1:
在这里插入图片描述
输入matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出[1,2,3,6,9,8,7,4,5]

示例 2:

在这里插入图片描述
输入matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出[1,2,3,4,8,12,11,10,9,5,6,7]

解题思路

控制上下边界、左右边界。每一次循环走一圈,走完一圈上下左右边界往内部压缩。结束条件是left>right top>bottom

  • 首先初始化上边界为第0行,下边界为最后一行,左边界是第0列,右边界是最后一列。可以看出边界就是要加到res(返回数组)的一圈。
  • 接下来一个循环,条件是true(无限循环),虽然终止条件是left>right top>bottom,但是在走一圈的过程中就可能会触发终止条件,而不是一圈结束了才会触发终止条件。因此在遍历四个时,每遍历一个边就判断一次终止条件

代码

var spiralOrder = function(matrix) {let left = 0; // 初始化左边界为第0列let right = matrix[0].length-1; // 初始化右边界为最后一列let top = 0; // 初始化上边界为第0行let bottom = matrix.length-1; // 初始化下边界为最后一行let res = []; // 初始化结果数组,用于存储最终的螺旋顺序元素while(true){ // 开始一个无限循环for(let i=left;i<=right;i++){ // 从左到右遍历第一行res.push(matrix[top][i]); // 将第一行的元素添加到结果数组}top++; // 遍历完第一行后,上边界下移if(top>bottom)break; // 如果上边界超过了下边界,结束循环for(let i=top;i<=bottom;i++){ // 从上到下遍历最后一列res.push(matrix[i][right]); // 将最后一列的元素添加到结果数组}right--; // 遍历完最后一列后,右边界左移if(right<left)break; // 如果右边界小于左边界,结束循环for(let i=right;i>=left;i--){ // 从右到左遍历最后一行res.push(matrix[bottom][i]); // 将最后一行的元素添加到结果数组}bottom--; // 遍历完最后一行后,下边界上移if(bottom<top) break; // 如果下边界小于上边界,结束循环for(let i=bottom;i>=top;i--){ // 从下到上遍历第一列res.push(matrix[i][left]); // 将第一列的元素添加到结果数组}left++; // 遍历完第一列后,左边界右移if(left>right) break; // 如果左边界超过了右边界,结束循环}return res; // 返回结果数组
};

案例分析

示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]

逐步分析:

  1. 初始化边界:

    • left = 0
    • right = 2
    • top = 0
    • bottom = 2
  2. 第一次循环:

    • 从左到右遍历第一行(top行):[1, 2, 3] 添加到 res
      • res = [1, 2, 3]
    • top++top = 1
    • 检查边界:top <= bottom1 <= 2),继续。
  3. 第二次循环:

    • 从上到下遍历最后一列(right列):[6, 9] 添加到 res
      • res = [1, 2, 3, 6, 9]
    • right--right = 1
    • 检查边界:right >= left1 >= 0),继续。
  4. 第三次循环:

    • 从右到左遍历最后一行(bottom行):[8, 7] 添加到 res
      • res = [1, 2, 3, 6, 9, 8, 7]
    • bottom--bottom = 1
    • 检查边界:bottom >= top1 >= 1),继续。
  5. 第四次循环:

    • 从下到上遍历第一列(left列):[4] 添加到 res
      • res = [1, 2, 3, 6, 9, 8, 7, 4]
    • left++left = 1
    • 检查边界:left <= right1 <= 1),继续。
  6. 第五次循环:

    • 从左到右遍历第二行(top行):[5] 添加到 res
      • res = [1, 2, 3, 6, 9, 8, 7, 4, 5]
    • top++top = 2
    • 检查边界:top > bottom2 > 1),循环结束。

结论:
循环在第五次遍历后结束,因为此时 top > bottom 的条件满足。因此,最终结果数组 res[1, 2, 3, 6, 9, 8, 7, 4, 5]

http://www.15wanjia.com/news/160884.html

相关文章:

  • 福建做网站的公司wordpress vr主题
  • jsp做的大型网站崇左网站建设
  • 阿里云做网站教程黄冈网站推广优化技巧
  • 手机旅游网站建设全球最新军事动态
  • 成全视频免费观看在线看咸阳官方进一步优化
  • 杭州建平台网站公司app的研发生产都包括什么
  • seo外链群发网站兰州市政建设集团官网
  • WordPress整站下载器什么是网站主办者
  • 网站编辑 seo是什么 百度知道东莞松山湖
  • 大型网站建设建设公司枣庄三合一网站开发公司
  • 企业微网站建设店面设计要素
  • 视频网站建设服务erp软件前十名
  • 厦门建设集团网站地图素材如何做ppt模板下载网站
  • 网站上的定位怎么做网站移动页面怎么做
  • 百度网站怎么建设的网站建设应遵循的原则
  • 北京网站建设seo优化南昌大学南昌网站建设公司
  • 网站效果图制作重庆品牌策划公司排名
  • 四川网站建设网站制作手机端wordpress怎么用
  • 一站式做网站大型网站开发框架有哪些
  • 怎么建立织梦网站网站页面效果图怎么做
  • 单页网站制作程序建筑工程网络推广
  • 无极网站招聘信息怎样建设免费网站
  • 广州安全教育平台登录入口官网广州seo优化方法
  • 许昌市住房和城乡建设局网站免费推广方式有哪些
  • 阿克苏市建设局网站汕头建站服务
  • 网站建设 地址 上海石门二路怎么注册子公司流程
  • 重庆做网站做得好的公司践行新使命忠诚保大庆网站建设
  • 中学生做的网站有哪些方面编程培训机构哪个好
  • seo综合查询怎么进入网站最受欢迎的十大培训课程
  • 福州seo网站优化成都开发网站建设