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

    浏览量

    17634
  • 二维
    +关注

    关注

    0

    文章

    41

    浏览量

    12289
  • 遍历技
    +关注

    关注

    0

    文章

    2

    浏览量

    6649

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    二维码扫描识别模组可集成到闸机,助力二维码/NFC识别

    随着移动支付的普及和应用场景的不断扩大,二维码/NFC识别技术在各种门禁系统和闸机中的应用也日益广泛。为了提供更便捷的通行体验和更高效的门禁管理,闸机制造商通常会选择集成二维码扫描识别模组,以便实现
    的头像 发表于 05-20 14:45 69次阅读
    <b class='flag-5'>二维</b>码扫描识别模组可集成到闸机,助力<b class='flag-5'>二维</b>码/NFC识别

    瑞芯微(EASY EAI)RV1126B 二维码生成

    1.二维码简介二维码又称二维条码,常见的二维码为QRCode,QR全称QuickResponse,是一个近几年来移动设备上超流行的一种编码方式,它比传统的BarCode条形码能存更多的
    的头像 发表于 04-08 10:48 223次阅读
    瑞芯微(EASY EAI)RV1126B <b class='flag-5'>二维</b>码生成

    [VirtualLab] 二维叉形光栅产生涡旋光阵列

    结果清晰地呈现了不同衍射级次对应的涡旋光场分布及其螺旋相位结构,验证了二维叉形光栅对拓扑荷的精确调制能力。 案例进一步展示了通过光阑筛选特定衍射级次的方法,可有效分离目标涡旋光束,便于后续应用分析,还
    发表于 04-01 09:15

    有哪些常见的二维码模组类型?

    二维码模组是集成了扫描引擎、解码芯片、光学组件的核心模块(也叫二维码模块),可直接嵌入自助终端、工业PDA、智能闸机等设备,实现二维码的快速识别与数据传输。其常见类型可按安装方式、扫描原理、通信接口
    的头像 发表于 01-24 00:00 1038次阅读
    有哪些常见的<b class='flag-5'>二维</b>码模组类型?

    瑞芯微(EASY EAI)RV1126B 二维码识别

    1.二维码识别简介二维条码/二维码(2-dimensionalbarcode)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧
    的头像 发表于 01-19 10:18 3886次阅读
    瑞芯微(EASY EAI)RV1126B <b class='flag-5'>二维</b>码识别

    二维影像扫描引擎在门禁二维码刷卡梯控行业中的应用

    在当今科技日新月异的时代,二维影像扫描引擎以其卓越的识别性能和广泛的应用领域,成为了门禁系统中不可或缺的重要组成部分,尤其在二维码刷卡梯控行业中展现出了非凡的价值。本文将深入探讨二维影像扫描引擎在
    的头像 发表于 12-17 15:42 576次阅读
    <b class='flag-5'>二维</b>影像扫描引擎在门禁<b class='flag-5'>二维</b>码刷卡梯控行业中的应用

    二维数组介绍

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

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

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

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

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

    【嘉楠堪智K230开发板试用体验】+二维码识别

    二维码识别 二维码识别本质上是一个通过图像处理技术定位并矫正图像中的二维码区域,然后根据其特定编码规则读取黑白模块的进制数据,并利用内置的纠错算法修复可能存在的损坏,最终解析出原始信
    发表于 08-22 20:16

    扫描条码模块、二维码模块,广泛应用于定制的手持设备

    在信息高速流转的时代,二维码作为信息承载的重要载体,推动着各类识别技术的革新。其中,扫描条码模块与二维码模块作为核心组件,衍生出了众多适配不同场景的设备,安卓手持终端便是典型代表——它以嵌入式二维
    的头像 发表于 08-18 15:18 861次阅读
    扫描条码模块、<b class='flag-5'>二维</b>码模块,广泛应用于定制的手持设备

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

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

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

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

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

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

    基于LockAI视觉识别模块:C++二维码识别

    二维码识别是视觉模块经常使用到的功能之一。我们将演示如何使用基于瑞芯微RV1106的LockAI视觉识别模块进行二维码识别。
    的头像 发表于 05-26 09:42 1228次阅读
    基于LockAI视觉识别模块:C++<b class='flag-5'>二维</b>码识别