给你四个整数 sx
、sy
、tx
和 ty
,表示在一个无限大的二维网格上的两个点 (sx, sy)
和 (tx, ty)
。
你的起点是 (sx, sy)
。
在任何位置 (x, y)
,定义 m = max(x, y)
。你可以执行以下两种操作之一:
(x + m, y)
,或者(x, y + m)
。返回到达 (tx, ty)
所需的 最小 移动次数。如果无法到达目标点,则返回 -1。
示例 1:
输入: sx = 1, sy = 2, tx = 5, ty = 4
输出: 2
解释:
最优路径如下:
max(1, 2) = 2
。增加 y 坐标 2,从 (1, 2)
移动到 (1, 2 + 2) = (1, 4)
。max(1, 4) = 4
。增加 x 坐标 4,从 (1, 4)
移动到 (1 + 4, 4) = (5, 4)
。因此,到达 (5, 4)
的最小移动次数是 2。
示例 2:
输入: sx = 0, sy = 1, tx = 2, ty = 3
输出: 3
解释:
最优路径如下:
max(0, 1) = 1
。增加 x 坐标 1,从 (0, 1)
移动到 (0 + 1, 1) = (1, 1)
。max(1, 1) = 1
。增加 x 坐标 1,从 (1, 1)
移动到 (1 + 1, 1) = (2, 1)
。max(2, 1) = 2
。增加 y 坐标 2,从 (2, 1)
移动到 (2, 1 + 2) = (2, 3)
。因此,到达 (2, 3)
的最小移动次数是 3。
示例 3:
输入: sx = 1, sy = 1, tx = 2, ty = 2
输出: -1
解释:
(1, 1)
到达 (2, 2)
。因此,答案是 -1。
提示:
0 <= sx <= tx <= 109
0 <= sy <= ty <= 109