zoukankan      html  css  js  c++  java
  • 岛屿数量——BFS / DFS对比

    DFS 解法

    class Solution {
        public int numIslands(char[][] grid) {
             int count=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);
                        count++;
                     }
                     
                 }
             }
             return count;
        }
        //DFS深度优先遍历
        public static void dfs(char[][] grid,int i,int j){                   
                    if(i>=0&&i<grid.length&&j>=0&&j<grid[0].length&&grid[i][j]=='1')    {
                        grid[i][j]='0'; 
                        dfs(gird,i,j-1); 
                        dfs(grid,i-1,j); 
                        dfs(grid,i+1,j); 
                        dfs(gird,i,j+1);                 
                    }                        
            }
        }
    }   
    

     

    BFS 解法

    class Solution {
        public int numIslands(char[][] grid) {
             int count=0;
             for(int i=0;i<grid.length;i++){
                 for(int j=0;j<grid[0].length;j++){
                     if(grid[i][j]=='1'){
                        bfs(grid,i,j);
                        count++;
                     }
                     
                 }
             }
             return count;
        }
        //BFS 广度优先遍历
        public static void bfs(char[][] grid,int i,int j){
            Queue<int[]> queue=new LinkedList<>();
            queue.add(new int[]{i,j});
            while(!queue.isEmpty()){
                    int[] cur=queue.poll();
                    i=cur[0];
                    j=cur[1];
                    if(i>=0&&i<grid.length&&j>=0&&j<grid[0].length&&grid[i][j]=='1'){
                        grid[i][j]='0'; 
                        queue.add(new int[]{i,j-1}); 
                        queue.add(new int[]{i-1,j}); 
                        queue.add(new int[]{i+1,j}); 
                        queue.add(new int[]{i,j+1});                 
                    }                        
            }
        }
    }
    

      

     

  • 相关阅读:
    python 单例模式
    JAVA基础知识总结
    java环境配置
    VScode输出中文乱码的解决方法------测试过可以用
    centos7 单独安装pip
    pyqt5信号与槽
    桌面程序显示到前台
    下载哔哩哔哩视频
    pyqt5 designer安装步骤
    树莓派配置静态wifi地址
  • 原文地址:https://www.cnblogs.com/python924/p/14305581.html
Copyright © 2011-2022 走看看