Menu
CoddyTech

Swim in Rising Water

Kamu mendapatkan grid n × n yang berisi ketinggian dan memuat setiap angka dari 0 hingga n²-1 tepat satu kali. Pada waktu t, air berada pada ketinggian t di semua tempat, sehingga setiap sel dengan ketinggian t atau kurang berada di bawah air. Kamu mulai di sel kiri atas. Kamu bisa berenang tanpa menghabiskan waktu ke sel yang berbagi sisi dengan selmu saat keduanya berada di bawah air. Kembalikan waktu paling awal saat kamu bisa berada di sel kanan bawah.

Fungsi

swimInWater(grid: integer-2d-array) → integer
gridinteger-2d-array
tinggi-tinggi, sebagai list yang terdiri dari n baris dengan masing-masing n angka
Mengembalikaninteger
waktu paling awal kamu dapat mencapai sel kanan bawah

Batasan

  • n == grid.length == grid[i].length
  • 1 ≤ n ≤ 100
  • 0 ≤ grid[i][j] ≤ n²-1
  • Setiap nilai dari 0 hingga n²-1 muncul tepat satu kali.

Contoh

Input
grid = [[0, 2], [3, 1]]
Output
2
Penjelasan
Melalui sel kanan atas, rutenya adalah 0, 2, 1, dengan sel tertinggi 2. Melalui sel kiri bawah, rutenya adalah 0, 3, 1, dengan sel tertinggi 3. Pada waktu 2, rute pertama berada di bawah air.
challenge icon

Pertanyaan lanjutan

Jika tinggi bisa berulang dan mencapai 10^9, pendekatan mana yang tetap berfungsi tanpa perubahan, dan apa yang akan kamu jadikan dasar pencarian biner?

Reset kode
def swimInWater(grid):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

2