LeetCode:島嶼的個數(shù)

島嶼的個數(shù)


題目敘述:

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

示例:

示例 1:
輸入:
11110
11010
11000
00000
輸出: 1
示例 2:
輸入:
11000
11000
00100
00011
輸出: 3

解題思路:

我們遍歷整個二維數(shù)組,當(dāng)我們遇到為'1'的,我們將其相鄰的所有‘1’重置為‘0’,即將這一塊島全部都變?yōu)楹K缓笤偃ケ闅v數(shù)組剩下的部分。遇到一個島嶼的第一標(biāo)‘1’的cnt加1。

代碼實現(xiàn):
class Solution {
    public int numIslands(char[][] grid) {
      int cnt = 0;
        for (int i = 0; i < grid.length; i++) {
            for (int j = 0; j < grid[i].length; j++) {
                if (grid[i][j] == '1') {
                    depthSearch(grid,i,j);
                    cnt++;
                }
            }
        }
        return cnt;  
    }
    public void depthSearch(char[][] grid, int i, int j) {
        if (grid == null ||(i<0 || i >= grid.length) ||( j<0 || j >= grid[i].length)) {
            return;
        }
        if (grid[i][j] != '1') {
            return;
        }
        grid[i][j] = '0';
        depthSearch(grid, i + 1, j) ;
        depthSearch(grid, i - 1, j) ;
        depthSearch(grid, i, j + 1) ;
        depthSearch(grid, i, j - 1);
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容