力扣-695.岛屿的最大面积(java,深度搜索)

在这里插入图片描述

提交代码:

class Solution {
    
    
    public int maxAreaOfIsland(int[][] grid){
    
    
        int n = grid.length;
        int m = grid[0].length;
        int[] count = new int[1];
        int max=0,temp=0;
        for (int i = 0;i<n;i++){
    
    
            for (int j = 0;j<m;j++){
    
    
                if (grid[i][j]==1){
    
    
                    count[0] = 0;
                     dfs(grid,i,j,count);
                    if (count[0]>max){
    
    
                        max = count[0];
                    }
                }
            }
        }

        return max;
    }

    public void dfs(int[][] a,int x,int y,int[] count){
    
    

        if (x < 0 ||x >=a.length||y>=a[0].length|| y < 0 || a[x][y] == 0||a[x][y]=='A') {
    
    
            return;
        }
        a[x][y] = 'A';
        count[0]++;
        dfs(a, x + 1, y,count);
        dfs(a,x-1,y,count);
        dfs(a,x,y+1,count);
        dfs(a,x,y-1,count);
    }

}

编译器能运行代码:

import java.util.Scanner;

public class Main {
    
    
    public static void main(String[] args) {
    
    
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        int m = input.nextInt();
        int[][] grid = new int[n][m];
        for (int i = 0;i<n;i++){
    
    
            for (int j = 0;j<n;j++){
    
    
                grid[i][j]=input.nextInt();
            }
        }
        Main zui = new Main();
        System.out.println(zui.maxAreaOfIsland(grid));
    }

    public int maxAreaOfIsland(int[][] grid){
    
    
        int n = grid.length;
        int m = grid[0].length;
        int[] count = new int[1];
        int max=0,temp=0;
        for (int i = 0;i<n;i++){
    
    
            for (int j = 0;j<m;j++){
    
    
                if (grid[i][j]==1){
    
    
                    count[0] = 0;
                     dfs(grid,i,j,count);
                    if (count[0]>max){
    
    
                        max = count[0];
                    }
                }
            }
        }

        return max;
    }

    public void dfs(int[][] a,int x,int y,int[] count){
    
    

        if (x < 0 ||x >=a.length||y>=a[0].length|| y < 0 || a[x][y] == 0||a[x][y]=='A') {
    
    
            return;
        }
        a[x][y] = 'A';
        count[0]++;
        dfs(a, x + 1, y,count);
        dfs(a,x-1,y,count);
        dfs(a,x,y+1,count);
        dfs(a,x,y-1,count);
    }


}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_46157208/article/details/108088254