クローズド諸島の1254数

所与の2Dは、  grid から成る  0s (ランド)と  1s (水)。   の最大4方向に接続されているグループ  0s と  、閉じた島は、  で囲まれた島完全(すべての左、上、右、下)であります 1s.

数を返し  、閉じた島々を

 

例1:

入力:グリッド= [1,1,1,1,1,1,1,0]、[1,0,0,0,0,1,1,0]、[1,0,1,0、 1,1,1,0]、[1,0,0,0,0,1,0,1]、[1,1,1,1,1,1,1,0]] 
出力:2 
説明:
それらは完全に水(1Sのグループ)に囲まれているので、グレーで島が閉じられています。

例2:

入力:グリッド= [0,0,1,0,0]、[0,1,0,1,0]、[0,1,1,1,0] 
出力:1

例3:

入力:グリッド= [1,1,1,1,1,1,1]、
               [1,0,0,0,0,0,1]、
               [1,0,1,1,1,0、 1]、
               [1,0,1,0,1,0,1]、
               [1,0,1,1,1,0,1]、
               [1,0,0,0,0,0,1] 、
               [1,1,1,1,1,1,1]] 
出力:2

 

制約:

  • 1 <= grid.length, grid[0].length <= 100
  • 0 <= grid[i][j] <=1
クラスソリューション{
     公共 のint closedIsland(INT [] []グリッド){
         int型 M = grid.length。
        INT、N =グリッド[0 ] .LENGTH。        
        int型のres = 0 ;
        以下のためにINT I 0 =; I <M、I ++ ){
             ためINT J = 0であり、j <N; J ++ ){
                 場合(グリッド[I] [J] == 0 && I == 0 || J == 0 || I == M - 1 || J == N - 1 )ヘルプ(I、J、グリッド)。
            } 
        } 
        のためにINT I 0 =; I <M; iが++ ){
            INT ; N J <J = 0 J ++ ){
                 場合(グリッド[I] [J] == 0 ){ 
                  RES ++ 
                  ヘルプ(I、J、グリッド)。  
                } 
            } 
        } 
        戻りRES。
    } 
    公共 ボイドヘルプ(INT R、INT C、INT [] []グリッド){
         もし、(R> -1 && R <grid.length && C> -1 && C <グリッド[0] .LENGTH &&格子[R] [C] == 0)グリッド[R] [C] = 1 他の リターン; 
        ヘルプ(R + 1 、C、グリッド)。
        ヘルプ(R、C + 1 、グリッド)。
        ヘルプ(R - 1 、C、グリッド)。
        ヘルプ(R、C - 1 、グリッド)。
    } 
}

その後、DFS、全境界領域0最初のセット、およびトラバースセットになると答えを得るために、次に0から1、0とエリアを追加する前に遭遇しました。

おすすめ

転載: www.cnblogs.com/wentiliangkaihua/p/11870644.html
おすすめ