問題重述
給定乙個包含了一些 0 和 1 的非空二維陣列 grid 。
乙個 島嶼 是由一些相鄰的 1 (代表土地) 構成的組合,這裡的「相鄰」要求兩個 1 必須在水平或者豎直方向上相鄰。你可以假設 grid 的四個邊緣都被 0(代表水)包圍著。
找到給定的二維陣列中最大的島嶼面積。(如果沒有島嶼,則返回面積為 0 。)
示例 1:
[[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。注意答案不應該是 11 ,因為島嶼只能包含水平或垂直的四個方向的 1
思路
這是一道標準的搜尋題目也就是dfs,拿來練手深度優先蘇搜尋很好,一般來說我們在做這種題目的時候都可以採用遞迴的方法,也就是分為主函式和輔函式,輔函式主要是負責深度優先搜尋的呼叫遞迴。**很簡單我們直接看**,理解。
這裡,我們在實際工程上,一般都是直接使用棧解決,一是便於理解,二是更不易出現遞迴棧滿的情況。
最終**
class
solution
}return max_area;
}int
dfs(vectorint>>
& grid,
int r,
int c)
grid[r]
[c]=0;
return1+
dfs(grid, r +
1, c)
+dfs
(grid, r -
1, c)
+dfs
(grid, r, c +1)
+dfs
(grid, r, c -1)
;}};
LeetCode 695島嶼最大面積
給定乙個包含了一些 0 和 1 的非空二維陣列 grid 乙個 島嶼 是由一些相鄰的 1 代表土地 構成的組合,這裡的 相鄰 要求兩個 1 必須在水平或者豎直方向上相鄰。你可以假設 grid 的四個邊緣都被 0 代表水 包圍著。找到給定的二維陣列中最大的島嶼面積。如果沒有島嶼,則返回面積為 0 示例...
leetcode 695 島嶼的最大面積
給定乙個包含了一些 0 和 1的非空二維陣列grid,乙個 島嶼 是由四個方向 水平或垂直 的1 代表土地 構成的組合。你可以假設二維矩陣的四個邊緣都被水包圍著。找到給定的二維陣列中最大的島嶼面積。如果沒有島嶼,則返回面積為0。示例 1 0,0,1,0,0,0,0,1,0,0,0,0,0 0,0,0...
leetcode 695 島嶼的最大面積
給定乙個包含了一些 0 和 1的非空二維陣列 grid 乙個 島嶼 是由四個方向 水平或垂直 的 1 代表土地 構成的組合。你可以假設二維矩陣的四個邊緣都被水包圍著。找到給定的二維陣列中最大的島嶼面積。如果沒有島嶼,則返回面積為0。示例 1 0,0,1,0,0,0,0,1,0,0,0,0,0 0,0...