zoukankan      html  css  js  c++  java
  • 695. Max Area of Island

    Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) connected 4-directionally (horizontal or vertical.) You may assume all four edges of the grid are surrounded by water.

    Find the maximum area of an island in the given 2D array. (If there is no island, the maximum area is 0.)

    Example 1:

     [0,0,1,0,0,0,0,1,0,0,0,0,0],
     [0,0,0,0,0,0,0,1,1,1,0,0,0],
     [0,1,1,0,1,0,0,0,0,0,0,0,0],
     [0,1,0,0,1,1,0,0,1,0,1,0,0],
     [0,1,0,0,1,1,0,0,1,1,1,0,0],
     [0,0,0,0,0,0,0,0,0,0,1,0,0],
     [0,0,0,0,0,0,0,1,1,1,0,0,0],
     [0,0,0,0,0,0,0,1,1,0,0,0,0]]
    

    Given the above grid, return 6. Note the answer is not 11, because the island must be connected 4-directionally.

    Example 2:

    [[0,0,0,0,0,0,0,0]]

    Given the above grid, return 0.

    含义:给定一个二维数组,垂直或水平方向连续的1构成一个岛屿,找出一个面积最大的岛屿。

     1 class Solution {
     2     
     3     int AreaOfIsland(int[][] grid, int i, int j){
     4         if (i>=0 && i<grid.length && j>=0 && j<grid[0].length && grid[i][j] == 1)
     5         {
             //周围四个节点的面积,加上本节点的面积1
    6 grid[i][j]=0; 7 return AreaOfIsland(grid,i-1,j) + AreaOfIsland(grid,i+1,j) + AreaOfIsland(grid,i,j-1) + AreaOfIsland(grid,i,j+1) + 1; 8 } 9 return 0; 10 } 11 12 public int maxAreaOfIsland(int[][] grid) { 13 int maxArea = 0; 14 for (int i=0;i<grid.length;i++) 15 for (int j=0;j<grid[0].length;j++) 16 { 17 if (grid[i][j] == 1) maxArea = Math.max(maxArea,AreaOfIsland(grid,i,j)); 18 } 19 return maxArea; 20 } 21 }
  • 相关阅读:
    JAVA 基本数据类型长度
    字符编码详解
    几种编码方式
    Java1.5泛型指南中文版(Java1.5 Generic Tutorial)
    java泛型小问题
    java中的equals()方法
    Java泛型中E、T、K、V等的含义
    数据库的基本操作
    Mysql数据类型简介(大概了解)
    [BZOJ 2007] 海拔
  • 原文地址:https://www.cnblogs.com/wzj4858/p/7672682.html
Copyright © 2011-2022 走看看