Menu
CoddyTech

Number of Islands

ふつうグラフpython iconjava iconcpp iconc iconjs icon+10

地図は、長さが等しい行のリストとして与えられます。各文字は、陸地のマスを表す1か、水のマスを表す0のいずれかです。ある陸地のマスの真上、真下、真左、または真右に別の陸地のマスがある場合、これらのマスは同じ島に属します。角で触れているだけのマスはつながっていません。

地図["11000", "11000", "00100", "00011"]を見てみましょう。

  • 左上の角にある4つの陸地のマスは、1つの島を形成します。
  • 中央の行にある1つのマスは、最初の島とは角で触れているだけなので、2つ目の島です。
  • 右下にある2つのマスは、3つ目の島を形成します。

つまり、この地図には3つの島があります。

この地図は実際にはグラフです。それぞれの陸地のマスがノードで、辺は辺を共有する2つの陸地のマスを結びます。島を数えることは、このグラフの連結した部分を数えることを意味します。まだ訪れていない陸地のマスを見つけるたびに、新しい島を見つけたことになり、次に進む前にその島全体を探索します。

numIslandsという名前の関数を作成してください。この関数は、1(陸地)と0(水)で構成された文字列のリストであるgridを受け取り、島の数を返します。島とは、上下左右に隣接してつながった陸地のマスの集まりです。

たとえば、["01110", "01000", "00011", "11001"]は3を返します。上の行にある形、右側の集まり、左下隅の2マスです。

制約:行数と列数は1以上150以下です。すべての行の長さは同じです。

関数

numIslands(arg1: string-array) → integer
arg1string-array
戻り値integer

例

入力
arg1 = ["11000", "11000", "00100", "00011"]
出力
3

lock icon提出時に隠しテスト+13件

コードをリセット
def numIslands(grid):
    # ここにコードを書いてください
テストケース

ケース1

ケース2

入力

arg1 = ["11000", "11000", "00100", "00011"]

期待値

3