leetcode-岛屿的最大面积

class Solution {
    private int[][] dp;
    private int maxcount = 0;
    public int maxAreaOfIsland(int[][] grid) {
        if(grid.length==0){
            return 0;
        }
        this.dp = new int[grid.length][grid[0].length];
        int rowlength = grid.length;
        int columnlength = grid[0].length;
        for(int i=0;i<grid.length;i+=1){
            for(int k=0;k<grid[0].length;k+=1){
                if(grid[i][k]==1){
                    this.dp[i][k] = 1;
                    int count = 1;
                    Queue<int[]> queue = new LinkedList<>();
                    queue.add(new int[]{i,k});
                    while(queue.size()>0){
                        int[] pollarray = queue.poll();
                        int row = pollarray[0];
                        int column = pollarray[1];
                        if(row-1>=0 && grid[row-1][column]==1 && this.dp[row-1][column]==0){
                            this.dp[row-1][column]=1;
                            count +=1;
                            queue.add(new int[]{row-1,column});
                        }
                        if(row+1<rowlength && grid[row+1][column]==1 && this.dp[row+1][column]==0){
                            this.dp[row+1][column]=1;
                            count +=1;
                            queue.add(new int[]{row+1,column});
                        }
                        if(column-1>=0 && grid[row][column-1]==1 && this.dp[row][column-1]==0){
                            this.dp[row][column-1]=1;
                            count +=1;
                            queue.add(new int[]{row,column-1});
                        }
                        if(column+1<columnlength && grid[row][column+1]==1 && this.dp[row][column+1]==0){
                            this.dp[row][column+1]=1;
                            count +=1;
                            queue.add(new int[]{row,column+1});
                        }
                    }
                    this.maxcount = Math.max(this.maxcount,count);
                }
            }
        }
        return this.maxcount;
    }
    
}

bfs+剪枝

不同的题适合 不同的方法,比如这道题刚开始准备用dfs,但发现不好写,于是就用bfs。

发布了48 篇原创文章 · 获赞 0 · 访问量 4325

猜你喜欢

转载自blog.csdn.net/weixin_41327340/article/details/103788267
今日推荐