https://leetcode-cn.com/problems/reaching-points/comments/
从点 (x, y) 可以转换到 (x, x+y) 或者 (x+y, y)。
给定一个起点 (sx, sy) 和一个终点 (tx, ty),如果通过一系列的转换可以从起点到达终点,则返回 True ,否则返回 False。
这道题一开始觉得是递归,但是立马被自己否决了,如果起始是(1,1),岂不要递归死
后来想了一个想法,我倒过来考虑啊,也没考虑太多,把想到的写了,然后就通过了!
不是最简洁的,但是自己想出来的
代码:
public boolean reachingPoints(int sx, int sy, int tx, int ty) {
while (tx != ty) {
if (tx > ty) {
if (ty < sy) {
return false;
}
if (ty == sy) {
if (tx >= sx && (tx - sx) % sy == 0) {
return true;
} else {
tx = tx % ty;
}
} else {
tx = tx % ty;
}
} else {
if (tx < sx) {
return false;
}
if (tx == sx) {
if (ty >= sy && (ty - sy) % sx == 0) {
return true;
} else {
ty = ty % tx;
}
} else {
ty = ty % tx;
}
}
}
if (sx == sy && sx == tx) {
return true;
}
return false;
}
leetcode的一些已经写的觉得有意思的其他题目
https://blog.csdn.net/qq_33321609/article/category/9012437
如果有我没有写博客的其他题目需要讨论,欢迎评论,一起探讨
版权声明:本文为qq_33321609原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。