來自公眾號:程序員小灰
————— 第二天 —————
什么意思呢?我們來舉個(gè)例子,給定下面這樣一個(gè)二維數(shù)組:
我們需要從左上角的元素1開始,按照順時(shí)針進(jìn)行螺旋遍歷,一直遍歷完所有的元素,遍歷的路徑就像下圖一樣:
經(jīng)過這樣的遍歷,返回的元素結(jié)果如下:
1,2,3,4,5,10,15,20,19,18,17,16,11,6,7,8,9,14,13,12
————————————
第1層
從左到右遍歷“上邊”:
從上到下遍歷“右邊”:
從右到左遍歷“下邊”:
從下到上遍歷“左邊”:
第2層
從左到右遍歷“上邊”:
從上到下遍歷“右邊”:
從右到左遍歷“下邊”:
從下到上遍歷“左邊”:
第3層
從左到右遍歷“上邊”:
從上到下遍歷“右邊”:
從右到左遍歷“下邊”:
第三層的“左邊”已無需遍歷,二維數(shù)組到此遍歷完畢。
publicclassSpiralOrder{ publicstaticList
在上面的代碼中,一個(gè)大循環(huán)當(dāng)中包含了4個(gè)小循環(huán)。大循環(huán)控制了每一層的遍歷,4個(gè)小循環(huán)分別實(shí)現(xiàn)了同一層上邊、右邊、下邊,左邊的遍歷。
當(dāng)遍歷到最內(nèi)層時(shí),4個(gè)小循環(huán)并不會(huì)全都執(zhí)行,比如測試代碼中matrix2的最內(nèi)層就只有一列,此時(shí)只需要遍歷“上邊”和“右邊”。
這種情況下,遍歷“下邊”和“左邊”的小循環(huán)必須加上了額外的條件限制:
(m-1)-i>i
i<(n-1)-i
使得同一條邊不會(huì)被重復(fù)遍歷到。
責(zé)任編輯:PSY
原文標(biāo)題:漫畫:如何螺旋遍歷二維數(shù)組?
文章出處:【微信公眾號:算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
螺旋
+關(guān)注
關(guān)注
0文章
32瀏覽量
17609 -
二維
+關(guān)注
關(guān)注
0文章
41瀏覽量
12260 -
遍歷技
+關(guān)注
關(guān)注
0文章
2瀏覽量
6648
原文標(biāo)題:漫畫:如何螺旋遍歷二維數(shù)組?
文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數(shù)據(jù)結(jié)構(gòu)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
有哪些常見的二維碼模組類型?
二維影像掃描引擎在門禁二維碼刷卡梯控行業(yè)中的應(yīng)用
二維數(shù)組介紹
中航光電推出二維FA光纖陣列組件
哪款二維碼模組適合嵌入戶外取餐柜,用于掃二維碼
【嘉楠堪智K230開發(fā)板試用體驗(yàn)】+二維碼識(shí)別
一維二維碼條碼識(shí)讀器的主要功能有哪些
世界首臺(tái)非硅二維材料計(jì)算機(jī)問世 二維材料是什么?二維材料的核心特征解讀
基于LockAI視覺識(shí)別模塊:C++二維碼識(shí)別
基于STM32的二維碼識(shí)別源碼+二維碼解碼庫lib
JCMsuite中對二維光柵的定義和仿真
基于RK3576開發(fā)板的二維碼生成
二維碼讀取器是干嘛的
嵌入式二維碼識(shí)別引擎是什么設(shè)備?哪些場景用得到?
螺旋遍歷二維數(shù)組漫畫講解
評論