https://leetcode.com/problems/reaching-points/description/
类似搜索的题,从终点往起点看,比较容易猜到正解。
这个题的关键点是,如果 ty > tx,那么必然是从 (tx, ty-tx)到达(tx, ty)这个状态的。
想明白上面,还需要知道一个优化的思路:取模不要一次一次相减
给个case
9
10
9
19
class Solution {
public:
bool reachingPoints(int sx, int sy, int tx, int ty) {
while (tx > sx && ty > sy) {
if (ty > tx) {
ty %= tx;
} else {
tx %= ty;
}
}
return (ty==sy || tx && (ty - sy) % tx == 0 ) && (ty && (tx - sx) % ty == 0 || sx == tx);
}
};