1 螺旋遍历二维数组漫画讲解-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

螺旋遍历二维数组漫画讲解

算法与数据结构 来源:程序员小灰 作者:程序员小灰 2020-11-26 14:01 次阅读

来自公众号:程序员小灰

————— 第二天 —————

什么意思呢?我们来举个例子,给定下面这样一个二维数组:

我们需要从左上角的元素1开始,按照顺时针进行螺旋遍历,一直遍历完所有的元素,遍历的路径就像下图一样:

经过这样的遍历,返回的元素结果如下:

1,2,3,4,5,10,15,20,19,18,17,16,11,6,7,8,9,14,13,12

————————————

第1层

从左到右遍历“上边”:

从上到下遍历“右边”:

从右到左遍历“下边”:

从下到上遍历“左边”:

第2层

从左到右遍历“上边”:

从上到下遍历“右边”:

从右到左遍历“下边”:

从下到上遍历“左边”:

第3层

从左到右遍历“上边”:

从上到下遍历“右边”:

从右到左遍历“下边”:

第三层的“左边”已无需遍历,二维数组到此遍历完毕。

publicclassSpiralOrder{ publicstaticListspiralOrder(int[][]matrix){ Listlist=newArrayList(); //当二维数组是空或任何一个维度是0,直接返回 if(matrix==null||matrix.length==0||matrix[0].length==0){ returnlist; } //m是矩阵的行数 intm=matrix.length; //n是矩阵的列数 intn=matrix[0].length; //二维数组的层数,取决于行和列的较小值 intsize=(Math.min(m,n)+1)/2; //大循环,从外向内逐层遍历矩阵 for(inti=0;ii;j++){ list.add(matrix[(m-1)-i][(n-1)-j]); } //从下到上遍历“左边” for(intj=i+1;jresultList1=spiralOrder(matrix); System.out.println(Arrays.toString(resultList1.toArray())); ListresultList2=spiralOrder(matrix2); System.out.println(Arrays.toString(resultList2.toArray())); } }

在上面的代码中,一个大循环当中包含了4个小循环。大循环控制了每一层的遍历,4个小循环分别实现了同一层上边、右边、下边,左边的遍历。

当遍历到最内层时,4个小循环并不会全都执行,比如测试代码中matrix2的最内层就只有一列,此时只需要遍历“上边”和“右边”。

这种情况下,遍历“下边”和“左边”的小循环必须加上了额外的条件限制:

(m-1)-i>i

i<(n-1)-i

使得同一条边不会被重复遍历到。

责任编辑:PSY

原文标题:漫画:如何螺旋遍历二维数组?

文章出处:【微信公众号:算法与数据结构】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 螺旋
    +关注

    关注

    0

    文章

    32

    浏览量

    17402
  • 二维
    +关注

    关注

    0

    文章

    40

    浏览量

    11983
  • 遍历技
    +关注

    关注

    0

    文章

    2

    浏览量

    6566

原文标题:漫画:如何螺旋遍历二维数组?

文章出处:【微信号:TheAlgorithm,微信公众号:算法与数据结构】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    二维内嵌扫码模组用于自助储物柜,快速扫描各种一二维条码

    随着科技的飞速发展,自助储物柜已成为我们日常生活中不可或缺的一部分,为公众提供了极大的便利。而这一切的背后,离不开二维内嵌扫码模组的强大支持。本文将深入探讨二维内嵌扫码模组在自助储物柜中的应用,以及
    的头像 发表于 12-04 15:56 94次阅读
    <b class='flag-5'>二维</b>内嵌扫码模组用于自助储物柜,快速扫描各种一<b class='flag-5'>维</b><b class='flag-5'>二维</b>条码

    指针数组二维数组有没有区别

    指针数组二维数组有没有区别?比如这样的两个代码。 int main(){ char *s1[] = { "hello", "world", "total" }; char s2[][6
    的头像 发表于 11-24 11:12 138次阅读

    二维码识读设备有哪些类型

    随着二维码应用的日益普及,各类二维码识读设备也应运而生。这些设备不仅极大地方便了我们的日常生活,也为企业提供了更加高效便捷的服务。那么,你知道二维码识读设备都有哪些类型吗?让我们一起来了解一下。据
    的头像 发表于 11-05 16:10 166次阅读
    <b class='flag-5'>二维</b>码识读设备有哪些类型

    labview按行读取二维数组之后再按读取顺序重新组成二维数组如何实现?

    labview用了index Array按索引一行行读取二维数组之后想再按读取顺序重新组成一个二维数组如何实现,即第一次读取的作为第一行,第
    发表于 10-25 21:06

    请问labview是否无法向matlab传递3数组

    经过一些测试,发现在matlab script中只能传二维数组,利用打包.net库,好像还是只能传递二维数组。 是不是从底层就不支持,这两种语言的三
    发表于 10-22 20:14

    二维力传感器怎么安装,在安装二维力传感器的安装步骤

    二维力传感器是一种精密的测量设备,用于检测物体在平面内的力和力矩。为了确保其测量结果的准确性和稳定性,正确的安装步骤至关重要。本文将详细介绍二维力传感器的安装方法。
    的头像 发表于 09-27 17:14 313次阅读
    <b class='flag-5'>二维</b>力传感器怎么安装,在安装<b class='flag-5'>二维</b>力传感器的安装步骤

    Labview生成二维

     Labview 的一个Demo,生成二维码。
    发表于 08-01 17:12 7次下载

    技术|二维PDOA平面定位方案

    一、方案概述二维平面定位系统,采用UWB定位技术,精度可到30cm。通过PDOA算法,可实现单基站二维平面的实时人员定位,增强对危险区域的管控,有效预防安全事故发生。面对突发情况,能做到及时报警响应
    的头像 发表于 06-04 14:53 921次阅读
    技术|<b class='flag-5'>二维</b>PDOA平面定位方案

    二维PDMA可以使用描述符链吗?

    我正在尝试使用二维描述符连锁。 编写了一些二维描述符链的代码。 但我有一些疑问,比如 1.二维 PDMA 可以使用描述符链吗? 2.如果 1 是,请附上一些代码 我们是否可以使用 2 个结构或只使用 1 个结构即可。
    发表于 05-31 08:16

    数组的转换到二维数组后的行列增减问题

    请大佬指点,如VI,两个求助点: 1、一数组大小,在停止Vi前把数组大小增加到4,在循环外设置了一数组的行数为0了,为啥再次运行VI后,
    发表于 05-11 00:25

    怎么在Framewin里显示二维码?

    各位前辈好,刚刚开始使用STemWin。现在一个Framewin里显示二维码,在Framewin初始化里调用二维码函数没有反应。请问需要怎么调用?
    发表于 04-16 08:27

    手持机二维扫描模组,轻松读取各类条码、二维码,长距离扫描

    手持机作为零售、物流、仓储等行业的主要信息采集设备,广泛应用于物资储存、仓储管理、配送运输等多个环节,而这些环节都离不开手持机二维扫描模组,即必须配置有专业的条码扫描头来完成条码高效快速识别与采集
    的头像 发表于 04-03 14:14 413次阅读
    手持机<b class='flag-5'>二维</b>扫描模组,轻松读取各类条码、<b class='flag-5'>二维</b>码,长距离扫描

    远距离二维码扫描器如何选择?看看以下三款远距离二维码扫码模块

    随着二维码相关技术及硬件的普及与低成本化,二维条码扫描设备的应用被人们广为熟知,应用的行业也众多。然而,在某些场景中,由于需要远距离扫描二维码(条码远距离识别),传统的扫码设备已经无法满足需求
    的头像 发表于 03-21 15:41 687次阅读
    远距离<b class='flag-5'>二维</b>码扫描器如何选择?看看以下三款远距离<b class='flag-5'>二维</b>码扫码模块

    Labview调用Halcon识别二维

    Labview调用Halcon识别二维码 可一次识别多个二维码 使用Labview 2020编辑,halcon的版本是 19.11,32位
    发表于 02-21 16:31

    二维/三的多轴PSO视觉飞拍与精准输出:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(八)

    本文主要讲解多轴PSO二维、三比较输出两种模式。
    的头像 发表于 01-08 09:34 485次阅读
    <b class='flag-5'>二维</b>/三<b class='flag-5'>维</b>的多轴PSO视觉飞拍与精准输出:EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(八)