• 200. Number of Islands


    Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by water.

    Example 1:

    11110
    11010
    11000
    00000

    Answer: 1

    Example 2:

    11000
    11000
    00100
    00011

    Answer: 3

     dfs

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

    bfs

    public class Solution {
        public int numIslands(char[][] grid) {
            int res = 0;
            Queue<int[]> queue = new LinkedList<>();
            for(int i = 0; i < grid.length; i++){
                for(int j = 0 ; j < grid[0].length; j++){
                    if(grid[i][j] == '1'){
                        res++;
                        queue.add(new int[]{i,j});
                        while(!queue.isEmpty()){
                            int point[] = queue.poll();
                            int row = point[0];
                            int col = point[1];
                            if(grid[row][col] == '0') continue;
                            grid[row][col] = '0';
                            if(row > 0)
                                queue.add(new int[]{row-1,col});
                            if(col > 0 )
                                queue.add(new int[]{row, col-1});
                            if(row < grid.length -1)
                                queue.add(new int[]{row+1, col});
                            if(col < grid[0].length -1)
                                queue.add(new int[]{row, col+1});
                        }
                    }
                }
            }
           
            return res;
        }
    }
  • 相关阅读:
    ios-app提交审核问题总结
    mui混合app请求过程处理(缓存、加载、刷新机制)
    vue引入assets和static静态资源问题
    mui入门教程
    scroll.js
    jQuery.Running.js
    CSS 编码技巧
    textillate.js
    3. 戏说VHDL之入门游戏一:流水灯
    2. 流水灯小计
  • 原文地址:https://www.cnblogs.com/joannacode/p/5947915.html
Copyright © 2020-2023  润新知