LeetCode 780 到达终点[数学] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 780 到达终点[数学] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。

解题思路:
一道数学类型的算法题,如果正向模拟,那么将会有太多的情况,这是 1 0 9 10^9 109范围的数据无法承受的时间复杂度,那么就需要逆向思维,由于终点一定不能小于起点的横纵坐标,所以每次都只能大减小,那么直接取大除小的余数即可,直到刚好等于起点,如果小了直接返回false。刚好到达起点的时候一般只有一个轴是刚好等于的,那么另一个轴如果减去起点同轴是起点另一个轴数的倍数,那么也满足条件,代码如下:

class Solution 
public:
    bool reachingPoints(int sx, int sy, int tx, int ty) 
        if(tx < sx || ty < sy) return false;
        // 前提条件不能越界
        while(tx > sx && ty > sy) 
            if(tx > ty) 
                tx = tx % ty;
             else 
                ty = ty % tx;
            
        
        // 当x相等,那么ty与sy,模tx同余
        if(tx == sx) return (ty - sy) % tx == 0;
        // 当y相等,那么tx与sx,模ty同余
        else if(ty == sy) return (tx - sx) % ty == 0;
        else return false;
    
;

以上是关于LeetCode 780 到达终点[数学] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 789 逃脱阻碍者[数学] HERODING的LeetCode之路

LeetCode 0754. 到达终点数字

Leetcode题解(21)

LeetCode 780. Reaching Points

LeetCode LCP 3 机器人大冒险

Leetcode 802 找到最终的安全状态(拓扑)