780 Reaching Points

1. Question

A move consists of taking a point(x, y)and transforming it to either(x, x+y)or(x+y, y).

Given a starting point(sx, sy)and a target point(tx, ty), returnTrueif and only if a sequence of moves exists to transform the point(sx, sy)to(tx, ty). Otherwise, returnFalse.

Examples:
Input: sx = 1, sy = 1, tx = 3, ty = 5

Output: True

Explanation:

One series of moves that transforms the starting point to the target is:
(1, 1) -> (1, 2)
(1, 2) -> (3, 2)
(3, 2) -> (3, 5)

Input: sx = 1, sy = 1, tx = 2, ty = 2

Output: False

Input: sx = 1, sy = 1, tx = 1, ty = 1

Output: True

Note:

  • sx, sy, tx, tywill all be integers in the range[1, 10^9].

2. Implementation

(1) BFS (TLE)

(2) Math

思路:看解析

3. Time & Space Complexity

Math: 时间复杂度O(max(tx, ty)), 空间复杂度O(1)

Last updated

Was this helpful?