【LeetCode】200. 島嶼數量

深度優先搜索

public class Solution {
    public int numIslands(char[][] grid) {
        // 島嶼數量的題目。搜索回溯來解題。
        // 遍歷二維數組。如果這個地方爲0,下一個。
        // 如果這個地方爲1,結果加一。把所有相連的1都置爲0
        int row = grid.length;
        if (row == 0) return 0;
        int column = grid[0].length;
        int res = 0;
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < column; j++) {
                if (grid[i][j] == '1') {
                    res++;// 說明是陸地,且沒有被遍歷過
                    search(i, j, row, column, grid);
                }
            }
        }
        return res;
    }

    public void search(int i, int j, int row, int column, char[][] grid) {
        if (i < 0 || i >= row) return;
        if (j < 0 || j >= column) return;
        if (grid[i][j] == '0') return;
        grid[i][j] = '0';
        search(i + 1, j, row, column, grid);
        search(i - 1, j, row, column, grid);
        search(i, j + 1, row, column, grid);
        search(i, j - 1, row, column, grid);
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章