๐ŸŒ• ๐ŸŒ— 200. ๅฒ›ๅฑฟๆ•ฐ้‡

ๅžไฝ›็ซฅๅญ2022ๅนด6ๆœˆ20ๆ—ฅ
  • algorithm
  • dfs
  • ๅฒ›ๅฑฟ้—ฎ้ข˜
ๅฐไบŽ 1 ๅˆ†้’Ÿ

๐ŸŒ• ๐ŸŒ— 200. ๅฒ›ๅฑฟๆ•ฐ้‡

้šพๅบฆ: ๐ŸŒ• ๐ŸŒ—

้—ฎ้ข˜ๆ่ฟฐ

img_7.png


่งฃๆณ•

class Solution {
    public int numIslands(char[][] grid) {
        // ๆ€่ทฏ๏ผš
        // dfs
        int row = grid.length;
        int col = grid[0].length;
        int res = 0;
        // ้ๅŽ†ๆ•ฐ็ป„๏ผŒ้‡ๅˆฐ้™†ๅœฐ๏ผŒๅฐฑๅฐฝๅฏ่ƒฝๅฐ†็›ธ้‚ป้™†ๅœฐๅ˜่‰ฒ๏ผŒ่กจ็คบๅทฒ็ป้ๅŽ†่ฟ‡
        for(int i = 0; i < row; i ++) {
            for(int j = 0; j < col; j ++) {
                if(grid[i][j] == '1') {
                    mySol(grid, i, j);
                    res ++; // ๅˆๆ˜ฏไธ€ๅ—ๆ–ฐ็š„้™†ๅœฐ
                }
            }
        }
        return res;
    }

    private void mySol(char[][] grid, int i, int j) {
        // ้€’ๅฝ’็ปˆๆญขๆกไปถ
        if(!isValid(grid, i, j)) {
            return;
        }
        if(grid[i][j] != '1') {
            return;
        }
        // ๆŸ“่‰ฒ
        grid[i][j] = '2';
        mySol(grid, i + 1, j); // ็ปง็ปญๆŸ“่‰ฒ
        mySol(grid, i - 1, j);
        mySol(grid, i, j + 1);
        mySol(grid, i, j - 1);
    }

    private boolean isValid(char[][] grid, int i, int j) {
        int row = grid.length;
        int col = grid[0].length;
        if(i < 0 || j < 0) {
            return false;
        }
        if(i >= row || j >= col) {
            return false;
        }
        return true;
    }
}

่พ“ๅ‡บ

img_6.png

ไธŠๆฌก็ผ–่พ‘ไบŽ: 2022/6/20 ไธ‹ๅˆ8:24:47
่ดก็Œฎ่€…: liuxianzhishou