695 島嶼的最大面積(DFS)

2021-10-11 11:02:04 字數 1193 閱讀 1569

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

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

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

注意: 給定的矩陣grid 的長度和寬度都不超過 50。

這題求島嶼最大面積,又要求島嶼要連續,其實就是可達性問題很明顯要用dfs。

知道要用dfs了就去套dfs模板,具體細節看**注釋

class

solution

int res =0;

//用來儲存結果

for(

int r =

0; r < grid.length; r++)}

}return res;

}public

intdfs

(int

grid,

int r,

int c)

if(grid[r]

[c]!=1)

grid[r]

[c]=0;

//經過前面兩個if篩選。可以確保正在遍歷的這個值是島嶼(1),遍歷過後為了避免再次遍歷,就將它變成0,簡稱「沉島」。【還可以建乙個集合visited用來儲存遍歷過的島嶼,但是這題沒有要求不能修改原陣列,為了節省空間我們就直接修改原陣列為0】

int area =1;

//正在遍歷的值為1,是島嶼,所以島嶼數量至少為1.

area +=

dfs(grid, r -

1, c)

;//向上遍歷

area +=

dfs(grid, r +

1, c)

;//向下遍歷

area +=

dfs(grid, r, c -1)

;//向左遍歷

area +=

dfs(grid, r, c +1)

;//向右遍歷

//上面四句area+=***;相當於把上下左右四個方向的島嶼數量全加起來了。

return area;

}}

695 島嶼的最大面積 DFS

給定乙個包含了一些 0 和 1 的非空二維陣列 grid 乙個 島嶼 是由一些相鄰的 1 代表土地 構成的組合,這裡的 相鄰 要求兩個 1 必須在水平或者豎直方向上相鄰。你可以假設 grid 的四個邊緣都被 0 代表水 包圍著。找到給定的二維陣列中最大的島嶼面積。如果沒有島嶼,則返回面積為 0 示例...

695 島嶼的最大面積

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

695 島嶼的最大面積

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