非ヌルグリッド番号0と1の二次元配列を指定し、四の方向(水平または垂直)1(土地を表す)の組み合わせから形成された島です。あなたは、2次元マトリックスの四辺を水に囲まれていると仮定することができます。
地域で最大の島で与えられた2次元配列を探します。(何の島々が存在しない場合は、面積が0に戻ります)
例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]
上記に与えられた行列6を返すべきです。島は4つだけ水平方向または垂直方向が「1」である含むので、答えは11であってはならないことに留意されたいです。例2:
[0,0,0,0,0,0,0,0]
上記の行列の場合、0が返されます。注:所与のグリッド行列の長さと幅は50以下です。
出典:滞在ボタン(LeetCode)
リンクします。https://leetcode-cn.com/problems/max-area-of-island
Javascriptのコードを達成するために:
/ * * * @param {数[] []}グリッド *の@return {数} * / VARの最大値= 0 。 varが訪れました= []; VAR fillVisited = 関数(レニ、lenj){ ため(LET i = 0; iはレニ<; iは++ ){ 訪問[I] = []; 用(LET J = 0; J <lenj; J ++ ){ 訪問[I] .push( 0)。// 全0数组 } } リターンが訪れました。 }。 VAR maxAreaOfIsland = 関数(グリッド){ せMAXX = 0; 訪問 = fillVisited(grid.length、グリッド[0] .LENGTH)。// 行数和列数 のため(LET i = 0; iはgrid.length <; iは++ ){ ため(J = 0せ; J <グリッド[0] .LENGTH; jは++ ){ 場合(グリッド[I] [J ] == 1 ){ 最大 = 0 。 聞かせてANS = (グリッド、i、j)を確認してください。 もし(MAXX < ANS){ MAXX = ANS。 } } } } 戻りMAXX。 }。 VaRのチェック=関数(グリッド、I、J){ 場合(!(I> = 0 && I <grid.length && J> = 0 && jの<グリッド[0] .LENGTH)||グリッド[I] [J]!= 1 || [I] [J])訪問 リターン 0 ; 訪問した[I] [J] = 1 ; 戻り検査(グリッド、I、J-1)+チェック(グリッド、I、J + 1)+チェック(グリッド、I-1、J)+チェック(グリッド、I + 1、J)+1 。 }。