leetcode 第200題 島嶼數量

2021-10-05 06:03:19 字數 932 閱讀 8990

題目:

給定乙個由 『1』(陸地)和 『0』(水)組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍。

示例 1:

輸入:

11110

11010

11000

00000

輸出: 1

示例 2:

輸入:

11000

11000

00100

00011

輸出: 3

思路:

遍歷島這個二維陣列,如果當前數為1,則進入感染函式並將島個數+1

函式:

其實就是乙個遞迴標註的過程,它會將所有相連的1都標註成2。為什麼要標註?這樣就避免了遍歷過程中的重複計數的情況,乙個島所有的1都變成了2後,遍歷的時候就不會重複遍歷了。

class

solution}}

return ans;

}void

infect

(vectorchar

>>

& grid,

int i,

int j)

grid[i]

[j]=

'2';

infect

(grid, i +

1, j)

;infect

(grid, i -

1, j)

;infect

(grid, i, j +1)

;infect

(grid, i, j -1)

;}};

島嶼數量 力扣第200題

題目 給你乙個由 1 陸地 和 0 水 組成的的二維網格,請你計算網格中島嶼的數量。島嶼總是被水包圍,並且每座島嶼只能由水平方向或豎直方向上相鄰的陸地連線形成。此外,你可以假設該網格的四條邊均被水包圍。示例 輸入 11110 11010 11000 00000輸出 1 分析 這個題和之前那個求最大島...

演算法題 leetcode200 島嶼數量

題目描述 給定乙個由 1 陸地 和 0 水 組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍。深度搜尋class solution return count public static void combine ...

200 島嶼數量 leetcode

思路 深度遍歷 1.第一層main函式裡 兩層迴圈找 grid x y 1 的點 res 1 2.遞迴函式裡,把與該點四個方向相鄰的,值為 1 的點全部標0 標0方法 對座標 x,y 四個方向中 值 1 的賦0 再遞迴。注意 1.對於二維陣列,判空要用 if len grid 0 return 0 ...