Menu
CoddyTech

Rotting Oranges

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

同じ長さの行のリストとして、グリッドが与えられます。各セルは0(空)、1(新鮮なオレンジ)、または2(腐ったオレンジ)です。毎分、腐ったオレンジと上下左右のいずれかで隣接している新鮮なオレンジは、腐ります。新鮮なオレンジがなくなるまでの分数を返してください。ただし、決して腐らない新鮮なオレンジがある場合は-1を返します。最初から新鮮なオレンジがないグリッドの場合、必要な分数は0です。

関数

orangesRotting(grid: integer-2d-array) → integer
gridinteger-2d-array
グリッド、各行に0、1、2のリスト
戻り値integer
オレンジが新鮮でなくなるまでの分数、またはそのようなことが起こらない場合は -1

制約

  • 1 ≤ grid.length ≤ 150
  • 1 ≤ grid[i].length ≤ 150
  • すべての行の長さは同じです。
  • 各grid[i][j]は0、1、または2です。

例

入力
grid = [[2, 1, 1, 0], [0, 1, 0, 1], [1, 1, 1, 1]]
出力
6
説明
セルを (行, 列) と表すと、腐ったオレンジは (0,0) にあり、唯一の経路をたどります。1 分後に (0,1)、2 分後に (0,2) と (1,1)、3 分後に (2,1)、4 分後に (2,0) と (2,2)、5 分後に (2,3) に到達します。(1,3) のオレンジは (2,3) にしか接していないため、最後に腐り、6 分後になります。

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

challenge icon

発展問題

腐った隣のオレンジに接したとき、新鮮なオレンジが腐るまでに必要な時間はそれぞれ異なるとします。その場合、完了までの時間をどのように求めますか?

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

ケース1

ケース2

ケース3

入力

grid = [[2, 1, 1, 0], [0, 1, 0, 1], [1, 1, 1, 1]]

期待値

6