來自公眾號:程序員小灰
————— 第二天 —————
什么意思呢?我們來舉個例子,給定下面這樣一個二維數組:
我們需要從左上角的元素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{ publicstaticList
在上面的代碼中,一個大循環當中包含了4個小循環。大循環控制了每一層的遍歷,4個小循環分別實現了同一層上邊、右邊、下邊,左邊的遍歷。
當遍歷到最內層時,4個小循環并不會全都執行,比如測試代碼中matrix2的最內層就只有一列,此時只需要遍歷“上邊”和“右邊”。
這種情況下,遍歷“下邊”和“左邊”的小循環必須加上了額外的條件限制:
(m-1)-i>i
i<(n-1)-i
使得同一條邊不會被重復遍歷到。
責任編輯:PSY
原文標題:漫畫:如何螺旋遍歷二維數組?
文章出處:【微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。
-
螺旋
+關注
關注
0文章
32瀏覽量
17396 -
二維
+關注
關注
0文章
40瀏覽量
11978 -
遍歷技
+關注
關注
0文章
2瀏覽量
6565
原文標題:漫畫:如何螺旋遍歷二維數組?
文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論