Leetcode--200. 岛屿数量
給定一個由?'1'(陸地)和 '0'(水)組成的的二維網格,計算島嶼的數量。一個島被水包圍,并且它是通過水平方向或垂直方向上相鄰的陸地連接而成的。你可以假設網格的四個邊均被水包圍。
示例 1:
輸入:
11110
11010
11000
00000
輸出:?1
示例?2:
輸入:
11000
11000
00100
00011
輸出: 3
思路:將相鄰的1看作是兩個點之間存在邊,0看作孤立點
用深度優先遍歷或者廣度優先遍歷
dfs:
提交的代碼:
class?Solution?{
???public void?dfs(char?grid[][],int?i,int?j)
????{
????????if(i<0||j<0||i>=grid.length||j>=grid[0].length||grid[i][j]=='0')
????????{
????????????return;
????????}
????????grid[i][j]='0';
????????dfs(grid,i+1,j);
????????dfs(grid,i-1,j);
????????dfs(grid,i,j+1);
????????dfs(grid,i,j-1);
????}
????public? int?numIslands(char[][]?grid)?{
????????if(grid.length==0)
????????{
????????????return?0;
????????}
????????int?sum=0;
????????for(int?i=0;i<grid.length;i++)
????????{
????????????for(int?j=0;j<grid[0].length;j++)
????????????{
????????????????if(grid[i][j]=='1')
????????????????{
????????????????????sum++;
????????????????????dfs(grid,i,j);
????????????????}
????????????}
????????}
????????return?sum;
????}
}
總結
以上是生活随笔為你收集整理的Leetcode--200. 岛屿数量的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【剑指offer】面试题58 - II:
- 下一篇: Snipaste的安装及快捷键的设置