leetcode780. 到达终点

  • Post author:
  • Post category:其他


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 版权协议,转载请附上原文出处链接和本声明。