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.

Note: The length of each dimension in the given grid does not exceed 50.


跟LC200一樣DFS,注意記錄每個(gè)island的area,然后取最大值。

public class Solution {
    
    public int maxAreaOfIsland(int[][] grid) {
        int count = 0;
        int max = 0;
        int n = grid.length;
        if(n==0) return 0;
        int m = grid[0].length;
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(grid[i][j]==1){
                    count = markAsZero(grid,i,j,count);
                    if(count>max){
                        max = count;
                    }
                    count=0;
                }
            }
        }
        return max;
    }
    public int  markAsZero(int[][] grid, int i, int j,int count){
        if(i<0||j<0||i>=grid.length||j>=grid[0].length||grid[i][j]==0) return count;
        
        grid[i][j]=0;
        count++;
        count = markAsZero(grid,i-1,j,count);
        count = markAsZero(grid,i,j-1,count);
        count = markAsZero(grid,i+1,j,count);
        count = markAsZero(grid,i,j+1,count);
        return count;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • **2014真題Directions:Read the following text. Choose the be...
    又是夜半驚坐起閱讀 9,939評(píng)論 0 23
  • 生物與非生物的不同,是生物能在種群內(nèi)不斷進(jìn)行著世代相傳,即生死輪回的生殖和繁衍。 此一生生不息的繁衍過程,就構(gòu)成了...
    D012?,斕?/span>閱讀 121評(píng)論 0 1
  • 生命之進(jìn)程,亦是失去自我之過程。 自打上班后,哦不,自打出生后,小熊便抑郁了 抑郁像是新生兒的第一口呼吸,原生,卻...
    Cornig閱讀 315評(píng)論 0 1
  • 這一刻,梔子花開,我們知道離離別不遠(yuǎn)了! “?!!扁徛曧懫鹆耍呃壬线€是如此安靜!那是即將步入中考...
    淡然_回眸閱讀 130評(píng)論 0 0