给定四个整数 sx , sy ,tx 和 ty,如果通过一系列的转换可以从起点 (sx, sy) 到达终点 (tx, ty),则返回 true,否则返回 false。
从点 (x, y) 可以转换到 (x, x+y) 或者 (x+y, y)。
class Solution {
public boolean reachingPoints(int sx, int sy, int tx, int ty) {
/*
sx,sy <-- (sx1+sy,sy) || (sx,sy1+sx)
从逆向推导来看,x,y坐标值,较大的那个由较小的累加而来
*/
if(sx>tx || sy>ty) return false;
while(tx>sx && ty>sy){
if(tx>ty){
tx-=ty;
}else{
ty-=tx;
}
}
if(tx==sx){
return (ty-sy)%tx==0;
}
if(ty==sy){
return (tx-sx)%ty==0;
}
return false;
}
}