来自公众号:程序员小灰
————— 第二天 —————
什么意思呢?我们来举个例子,给定下面这样一个二维数组:
我们需要从左上角的元素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;i
i<(n-1)-i
使得同一条边不会被重复遍历到。
原文标题:漫画:如何螺旋遍历二维数组?
文章出处:【微信公众号:算法与数据结构】欢迎添加关注!文章转载请注明出处。
盘点自动驾驶技术发展现状和5个阶段
8位无符号数乘法运算HDL设计实例
特斯拉创始人再度出击:超高速高铁有望成真
更开放!外资可在华建设经营电网
国产CMOS毫米波芯片完成封装和测试,打破国外芯片垄断局面
螺旋遍历二维数组漫画讲解
ProDAQ6100-LXI主机的功能及应用特点
小米壁画电视体验 距离智能生活更进一步
英伟达A800 GPU交货中国大陆客户或排到明年Q1
墙上插座有电插上没电怎么修
I2C器件接口IP核的CPLD设计
诺基亚6台湾版今日开卖了
医用动态电源管理模块设计方案
英飞凌与捷德携手批量供货符合CIPURSE开放式标准的非接触式智能卡
【底盘大PK】奥迪A6L/凯迪拉克XTS
诺基亚N9复刻版曝光 运行KaiOS系统
一款 5V 供电、半双工、低功耗、低摆率的RS-485收发器SIT485
无人机地面站提升无人机作业效率及智能易用性
基于零磁通原理的小电流互感器在电力系统中的应用解析
基于SOA与文件传输协议的域控制器升级测试方案