題目:
給定乙個由 『1』(陸地)和 『0』(水)組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍。
示例 1:
輸入:示例 2:11110
11010
11000
00000
輸出: 1
輸入:思路: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 ...