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});                 
                    }                        
            }
        }
    }
    

      

     

  • 相关阅读:
    IOS开发之----NSDictionary,JSON和XML互相转换
    IOS中UITabelView常用属性
    IOS画板笔记
    cxf的wsdl2java命令和JDK的wsimport命令的区别和使用(转载)
    xml笔记(马士兵)
    javaDB(转载)
    dom4j全述(转)
    java性能类(摘录)
    ajax快记
    js的事件复制
  • 原文地址:https://www.cnblogs.com/python924/p/14305581.html
Copyright © 2011-2022 走看看