Menu
CoddyTech

Swim in Rising Water

Bạn có một lưới n × n gồm các độ cao, chứa mọi số từ 0 đến n²-1 đúng một lần. Ở thời điểm t, nước dâng đến độ cao t ở mọi nơi, vì vậy mọi ô có độ cao bằng hoặc thấp hơn t đều chìm dưới nước. Bạn bắt đầu ở ô trên cùng bên trái. Bạn có thể bơi, không mất thời gian, đến một ô chung cạnh với ô hiện tại khi cả hai ô đều chìm dưới nước. Hãy trả về thời điểm sớm nhất bạn có thể đến ô dưới cùng bên phải.

Hàm

swimInWater(grid: integer-2d-array) → integer
gridinteger-2d-array
các chiều cao, dưới dạng danh sách gồm n hàng, mỗi hàng có n số
Trả vềinteger
thời điểm sớm nhất bạn có thể đến ô dưới cùng bên phải

Ràng buộc

  • n == grid.length == grid[i].length
  • 1 ≤ n ≤ 100
  • 0 ≤ grid[i][j] ≤ n²-1
  • Mỗi giá trị từ 0 đến n²-1 xuất hiện đúng một lần.

Ví dụ

Đầu vào
grid = [[0, 2], [3, 1]]
Đầu ra
2
Giải thích
Qua ô trên cùng bên phải, đường đi là 0, 2, 1, với ô cao nhất là 2. Qua ô dưới cùng bên trái, đường đi là 0, 3, 1, với ô cao nhất là 3. Ở thời điểm 2, đường đi đầu tiên bị ngập nước.
challenge icon

Câu hỏi mở rộng

Nếu chiều cao có thể lặp lại và đạt đến 10^9, cách tiếp cận nào của bạn vẫn hoạt động mà không cần thay đổi, và bạn sẽ tìm kiếm nhị phân trên những gì?

Đặt lại code
def swimInWater(grid):
    # Viết code tại đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

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

Đầu ra mong đợi

2