Menu
CoddyTech

Swim in Rising Water

各行のリストとして、0 から n²-1 までのすべての数がそれぞれちょうど1回ずつ含まれる、高さの n × n グリッドが与えられます。時刻0に雨が降り始め、時刻 t には水位がどこでも高さ t になるため、高さが t 以下のすべてのマスが水に沈みます。左上のマスからスタートします。両方のマスが水に沈んでいるとき、辺を共有するマス同士を泳いで移動でき、泳ぐのに時間はかかりません。右下のマスに到達できる最も早い時刻を返してください。

関数

swimInWater(grid: integer-2d-array) → integer
gridinteger-2d-array
高さを、n 個の数値からなる n 行のリストとして
戻り値integer
右下のセルに到達できる最も早い時刻

制約

  • n == grid.length == grid[i].length
  • 1 ≤ n ≤ 100
  • 0 ≤ grid[i][j] ≤ n²-1
  • 0 から n²-1 までのすべての値が、それぞれちょうど1回ずつ現れます。

例

入力
grid = [[0, 2], [3, 1]]
出力
2
説明
右上のセルを通る経路は 0, 2, 1 で、最も高いセルは 2 です。左下のセルを通る経路は 0, 3, 1 で、最も高いセルは 3 です。時刻 2 では最初の経路が水没しているため、答えは 2 です。

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

challenge icon

発展問題

高さが重複し、10^9に達する可能性がある場合、あなたのアプローチのうち、変更せずに機能するのはどれですか?また、何を対象に二分探索しますか?

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

ケース1

ケース2

ケース3

入力

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

期待値

2