Menu
CoddyTech

Swim in Rising Water

你会得到一个 n × n 的高度网格,其中包含从 0 到 n²-1 的每个数字,且每个数字恰好出现一次。在时间 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 的每个值都恰好出现一次。

示例

输入
grid = [[0, 2], [3, 1]]
输出
2
解释
经过右上方单元格的路线是 0、2、1,其中最高的单元格是 2。经过左下方单元格的路线是 0、3、1,其中最高的单元格是 3。在时间 2 时,第一条路线已被水淹没。
challenge icon

进阶

如果高度可能重复,且达到 10^9,你的哪些方法仍然可以原样使用?你会对什么进行二分查找?

重置代码
def swimInWater(grid):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

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

预期输出

2