這一個(gè)月以來(lái),都在學(xué)習(xí)平面上的地圖搜索,主要涉及到深度優(yōu)先搜索(DFS)和廣度優(yōu)先搜索(BFS)。這兩個(gè)算法和相關(guān)數(shù)據(jù)結(jié)構(gòu)我整整學(xué)習(xí)了一個(gè)月,中間經(jīng)歷了很多對(duì)自己畏難情緒的克服,現(xiàn)在終于搞懂了,不過(guò)并沒有掌握得很好。要想掌握得很好,需要后期編碼來(lái)鞏固加強(qiáng)了。

先從這道leetcode上面的題目作為引子:

Number of islands(200)

Given a 2d grid map of ‘1’s (land) and ‘0’s (water), count the number of islands.An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically.You may assume all four edges of the grid are all surrounded by water.

   大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計(jì)算培訓(xùn),高端軟件開發(fā)培訓(xùn),項(xiàng)目經(jīng)理培訓(xùn)

  開始看到這道題目時(shí),我的內(nèi)心是崩潰的。因?yàn)槲彝耆沁B題目都看不懂,什么是islands?

  islands定義

(1)被water包圍;

(2)被水平或者垂直lands相連。

(3)一個(gè)只包含0和1的二維數(shù)組,找到里面不相鄰的只包含1的塊的個(gè)數(shù)。

 

然后看到答案,說(shuō)解決這道題既可以用到DFS,又可以用到BFS。之前對(duì)DFS還有一點(diǎn)點(diǎn)接觸,然后BFS就非常頭大了。只要遍歷一遍,碰到一個(gè)1,就把他周圍相鄰的1都標(biāo)記為非1,這樣整個(gè)遍歷過(guò)程中碰到的1的個(gè)數(shù)就是所求解。 

 

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式