Leetcode200. 島嶼的個數(shù)(深度搜索)

很簡單的一道題,可以說是一道模板題

給定一個由 '1'(陸地)和 '0'(水)組成的的二維網(wǎng)格,計算島嶼的數(shù)量。一個島被水包圍,并且它是通過水平方向或垂直方向上相鄰的陸地連接而成的。你可以假設網(wǎng)格的四個邊均被水包圍。

示例 1:

輸入:

11110
11010
11000
00000

輸出: 1

示例 2:

輸入:

11000
11000
00100
00011

輸出: 3

解法:

dfs深度優(yōu)先搜索算法,沒有什么難度

class Solution {
    public int numIslands(char[][] grid) {
        if(grid.length==0) return 0;
        int res=0;
        int row = grid.length;
        int col = grid[0].length;
        for(int i=0;i<row;i++){
            for(int j=0;j<col;j++){
                if(grid[i][j]=='1'){
                    dfs(grid,i,j,row,col);
                    res++;
                }
            }
        }
            return res;
    }
    public void dfs(char[][] grid,int i,int j,int row,int col){
        if(i<0||i>row-1||j<0||j>col-1||grid[i][j]=='0') return ;
        grid[i][j] = '0';
        dfs(grid,i+1,j,row,col);
        dfs(grid,i-1,j,row,col);
        dfs(grid,i,j+1,row,col);
        dfs(grid,i,j-1,row,col);
    }

}

執(zhí)行用時 : 3 ms, 在Number of Islands的Java提交中擊敗了100.00% 的用戶

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容