島嶼問題系列題解

2021-10-05 08:23:59 字數 2288 閱讀 4191

給你乙個由 『1』(陸地)和 『0』(水)組成的的二維網格,島嶼總是被水包圍,並且每座島嶼只能由水平方向和/或豎直方向上相鄰的陸地連線形成。此外,你可以假設該網格的四條邊均被水包圍。求島嶼的數量。

輸入:11110

11010

11000

00000

輸出: 1

輸入:11000

11000

00100

00011

輸出: 3

解釋: 每座島嶼只能由水平和/或豎直方向上相鄰的陸地連線而成。

1.遍歷整個二維陣列

2.如果為1說明是陸地,那麼對該點上右下左四個方向進行dfs。把搜尋過的點的值改為2,表示該點已被搜尋過。

3.在dfs的時候,要判斷下標是否合法,避免越界

//求島嶼的數量

class

solution

,dy=

;int n = grid.

size()

,m = grid[0]

.size()

; grid[x]

[y]=

'2';

for(

int i=

0;i<

4;i++)}

intnumislands

(vectorchar

>>

& grid)}}

return cunt;}}

;

時間複雜度:只遍歷二維nm數m組一遍,所以時間複雜度為o(nm),n,m分n別為列數和行數。

空間複雜度: o(nm),因為如果二維全為1的話,dfs深度會達到nm。

給定乙個包含 0 和 1 的二維網格地圖,其中 1 表示陸地 0 表示水域。

網格中的格仔水平和垂直方向相連(對角線方向不相連)。整個網格被水完全包圍,但其中恰好有乙個島嶼(或者說,乙個或多個表示陸地的格仔相連組成的島嶼)。

島嶼中沒有「湖」(「湖」 指水域在島嶼內部且不和島嶼周圍的水相連)。格仔是邊長為 1 的正方形。網格為長方形,且寬度和高度均不超過 100 。計算這個島嶼的周長。

輸入:0,1,0,0

1,1,1,0

0,1,0,0

1,1,0,0

輸出: 16

解釋: 每個為1的數周圍有4條邊,,求與0相鄰的邊的個數.

1.直接遍歷整個二維陣列,如果為1,則他初始有4條邊

2.看他上右下左四個方向的格仔有多少個1。有多少個就減去多少條邊。

3.最後將所有為1的格仔不重複的邊加起來就是結果。

//求島嶼的周長

class

solution

,dy=

;int n = grid.

size()

;int m = grid[0]

.size()

;int res =0;

for(

int i=

0;i) res +

= count;}}

}return res;}}

;

給定乙個包含了一些 0 和 1 的非空二維陣列 grid 。

乙個 島嶼 是由一些相鄰的 1 (代表土地) 構成的組合,這裡的「相鄰」要求兩個 1 必須在水平或者豎直方向上相鄰。你可以假設 grid 的四個邊緣都被 0(代表水)包圍著。

找到給定的二維陣列中最大的島嶼面積。(如果沒有島嶼,則返回面積為 0 。)

輸入:0,0,1,0,0,0,0,1,0,0,0,0,0

0,0,0,0,0,0,0,1,1,1,0,0,0

0,1,1,0,1,0,0,0,0,0,0,0,0

0,1,0,0,1,1,0,0,1,0,1,0,0

0,1,0,0,1,1,0,0,1,1,1,0,0

0,0,0,0,0,0,0,0,0,0,1,0,0

0,0,0,0,0,0,0,1,1,1,0,0,0

0,0,0,0,0,0,0,1,1,0,0,0,0

輸出:6

思路:dfs找出所有的島嶼,選出最大的那個。就是在找島嶼的數量那道題的基礎上,增加求dfs棧最大深度。

//求島嶼的最大面積

int dx=

,dy=

;class

solution

return count;

}int

maxareaofisland

(vectorint>>

& grid)}}

return res;}}

;

leetcode題解200 島嶼數量

給你乙個由 1 陸地 和 0 水 組成的的二維網格,請你計算網格中島嶼的數量。島嶼總是被水包圍,並且每座島嶼只能由水平方向和 或豎直方向上相鄰的陸地連線形成。此外,你可以假設該網格的四條邊均被水包圍。示例 1 輸入 grid 1 1 1 1 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0...

小C的島嶼 題解

ioi2018 集訓隊作業 by 任軒笛 小c有 n 個島嶼。她為了管理島上的人,決定讓這些島嶼連通。每個島嶼i有乙個概率值 p i 和乙個友好列表 a i 小c首先來到了1號島嶼,她會依次執行下面操作 設現在在島嶼 x 有 p x 的概率產生一條無向邊連線兩個隨機島嶼,這兩個島嶼不會相同,也不會已...

島嶼問題(DFS)

題目 方格搜尋類題目均可使用dfs演算法 695.給定乙個包含了一些 0 和 1的非空二維陣列 grid 乙個 島嶼 是由四個方向 水平或垂直 的 1 代表土地 構成的組合。你可以假設二維矩陣的四個邊緣都被水包圍著。找到給定的二維陣列中最大的島嶼面積。如果沒有島嶼,則返回面積為0。示例 1 0,0,...