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之路的主要内容,如果未能解决你的问题,请参考以下文章