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

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

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

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

    关注

    0

    文章

    32

    浏览量

    17593
  • 二维
    +关注

    关注

    0

    文章

    41

    浏览量

    12215
  • 遍历技
    +关注

    关注

    0

    文章

    2

    浏览量

    6637

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    二维数组介绍

    大家不要认为二维数组在内存中就是按行、列这样二维存储的,实际上,不管二维、三数组… 都是编译器
    发表于 11-25 07:42

    中航光电推出二维FA光纤阵列组件

    中航光电研制的二维FA光纤阵列组件作为OCS光交换设备的关键组件,用于实现阵列光信号的输入和输出功能;该组件集成了二维光纤阵列和二维透镜阵列,通过者的精确耦合对准,实现准直光束的稳定
    的头像 发表于 09-10 18:19 1795次阅读

    哪款二维码模组适合嵌入户外取餐柜,用于扫二维

    在智能取餐柜普及的当下,二维码模组作为核心交互组件,其性能直接影响用户体验与设备稳定性。针对户外场景的特殊需求,深圳远景达物联网推出的LV4300Pro系列二维码模组,凭借工业级设计与场景化技术优化
    的头像 发表于 09-10 15:00 449次阅读
    哪款<b class='flag-5'>二维</b>码模组适合嵌入户外取餐柜,用于扫<b class='flag-5'>二维</b>码

    二维码条码识读器的主要功能有哪些

    在信息化快速发展的当下,一二维码条码识读器已成为各行各业高效处理信息的重要工具。从超市收银到物流追踪,它凭借快速准确的信息识别能力,大幅提升了工作效率。那么,一二维码条码识读器的主
    的头像 发表于 08-01 15:59 746次阅读
    一<b class='flag-5'>维</b><b class='flag-5'>二维</b>码条码识读器的主要功能有哪些

    世界首台非硅二维材料计算机问世 二维材料是什么?二维材料的核心特征解读

    据外媒报道;美国宾夕法尼亚州立大学团队在《自然》杂志发表研究成果,首次利用原子级厚度的二维材料(非硅)成功研制出功能完整的计算机,标志着新型电子设备开发的重要进展。这是一项突破性成果;首次利用二维
    的头像 发表于 06-12 15:25 1180次阅读

    基于STM32的二维码识别源码+二维码解码库lib

    基于STM32的二维码识别源码+二维码解码库lib,推荐下载!
    发表于 05-28 22:04

    基于STM32的二维码识别源码+二维码解码库lib

    基于STM32的二维码识别源码+二维码解码库lib项目实例下载! 纯分享帖,需要者可点击附件免费获取完整资料~~~【免责声明】本文系网络转载,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请第一时间告知,删除内容!
    发表于 05-23 20:45

    JCMsuite中对二维光栅的定义和仿真

    光栅是光衍射的周期性结构。它能把入射的光束衍射成几束向不同方向发散的光束。 二维光栅 二维光栅在两个水平方向上都具有周期性。存在两个晶格矢量因此当几何结构移位一个晶格矢量时, 下图显示了一个正方形
    发表于 05-19 08:53

    二维码读取器是干嘛的

    二维码读取器(用于二维码读取的机器),作为一种现代化的自动识别技术设备,正日益渗透到我们生活的方方面面。从商场购物到物流配送,从医疗管理到工业生产线,二维码读取器凭借其高效、准确的读取能力,发挥
    的头像 发表于 03-17 15:57 854次阅读
    <b class='flag-5'>二维</b>码读取器是干嘛的

    请问LabView中如何直接发送二维数组到DMD上显示?

    LabView中如何直接发送二维数组到DMD上显示。 在LabView中,调用int LoadData(UCHAR*RowData,long length)遇到两个问题,1 二维数组
    发表于 02-27 07:30

    二维影像扫描引擎可以应用于哪些行业?

    二维影像扫描引擎,作为自动识别技术的重要组成部分,以其高效、精准的扫描能力,在多个行业领域内展现出广泛的应用前景。这些引擎不仅提升了数据采集的效率和准确性,还推动了各行业的数字化转型进程。零售业:在
    的头像 发表于 02-14 14:59 868次阅读
    <b class='flag-5'>二维</b>影像扫描引擎可以应用于哪些行业?

    二维周期光栅结构(菱形)光波导的应用

    建模,包括所有效应(例如相干、偏振和衍射)。我们通过对专利WO2018/178626中提到的设备进行建模来证明这一能力,该设备由复杂的一二维菱形光栅结构组成。 建模任务:专利WO2018
    发表于 01-23 10:37

    二维扫码头有效扫描距离是多少,影响二维扫描头扫码的因素有哪些

    在现代科技快速发展的今天,二维码扫描已经成为我们日常生活和工作中不可或缺的一部分,无论是支付、物流追踪还是信息获取,都离不开二维码的扫描。那么,二维扫描头的有效扫描距离究竟是多少?又有哪些因素会
    的头像 发表于 01-15 16:26 1879次阅读
    <b class='flag-5'>二维</b>扫码头有效扫描距离是多少,影响<b class='flag-5'>二维</b>扫描头扫码的因素有哪些

    /二维条码识读器可以应用于哪些行业?

    /二维条码识读器,作为现代信息技术的重要组成部分,其应用范围极为广泛,几乎涵盖了所有需要高效、准确信息处理的行业。以下是一/二维条码识读器在几个关键行业中的应用概览。零售业:在零
    的头像 发表于 01-10 00:00 919次阅读
    一<b class='flag-5'>维</b>/<b class='flag-5'>二维</b>条码识读器可以应用于哪些行业?

    RS232接口的二维影像扫描引擎,广泛用在医疗设备上扫一二维

    在医疗设备领域,二维码的应用日益广泛,它作为信息的快速传递和识别手段,为医疗管理、患者追踪、设备维护等环节带来了极大的便利。而在这背后,RS232接口的二维影像扫描引擎扮演着至关重要的角色,它以
    的头像 发表于 12-23 16:02 901次阅读
    RS232接口的<b class='flag-5'>二维</b>影像扫描引擎,广泛用在医疗设备上扫一<b class='flag-5'>维</b><b class='flag-5'>二维</b>码