题目:

给定四个整数 sx , sy ,tx 和 ty,如果通过一系列的转换可以从起点 (sx, sy) 到达终点 (tx, ty),则返回 true,否则返回 false。

从点 (x, y) 可以转换到 (x, x+y)  或者 (x+y, y)。

示例 1:

输入: sx = 1, sy = 1, tx = 3, ty = 5
输出: true
解释:
可以通过以下一系列转换从起点转换到终点:
(1, 1) -> (1, 2)
(1, 2) -> (3, 2)
(3, 2) -> (3, 5)
示例 2:

输入: sx = 1, sy = 1, tx = 2, ty = 2 
输出: false
示例 3:

输入: sx = 1, sy = 1, tx = 1, ty = 1 
输出: true

提示:

1 <= sx, sy, tx, ty <= 109

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reaching-points
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

结果:

解题思路:

这题一开始自己想的是递归,然后如我所想的超时了。。。

然后查看题解,发现我忽略了一个问题,那就是可以取余的。

首先要把很大的tx和ty变成相互之间取余后最小的两个数值。

循环结束后,此时tx 和 ty是相互之间无法在整除的场景。

此时如果sx == tx ,sy == ty 返回true,

如果sx == tx ,但是 sy != ty 。这时候如果sy < ty 且 (ty - sy) % tx == 0 则说明还是可以呗整除的。

sy == ty的时候也是相同的逻辑。

以上都没有命中的时候那肯定是无法走到的。

代码:

bool reachingPoints(int sx, int sy, int tx, int ty){while (sx < tx && sy < ty && tx != ty) {if (tx > ty) {tx %= ty;} else {ty %= tx;}}if (sx == tx && sy == ty) {return true;} else if (sx == tx) {return (sy < ty) && (ty - sy) % tx == 0;} else if (sy == ty) {return (sx < tx) && (tx - sx) % ty == 0;}return false;
}

C练题笔记之:Leetcode-780. 到达终点相关推荐

  1. Java实现 LeetCode 780 到达终点(逻辑题)

    780. 到达终点 从点 (x, y) 可以转换到 (x, x+y) 或者 (x+y, y). 给定一个起点 (sx, sy) 和一个终点 (tx, ty),如果通过一系列的转换可以从起点到达终点,则 ...

  2. LeetCode 754. 到达终点数字(数学推理)

    1. 题目 在一根无限长的数轴上,你站在0的位置.终点在target的位置. 每次你可以选择向左或向右移动.第 n 次移动(从 1 开始),走 n 步. 返回到达终点需要的最小移动次数. 示例 1: ...

  3. Java实现 LeetCode 754 到达终点数字(暴力+反向)

    754. 到达终点数字 在一根无限长的数轴上,你站在0的位置.终点在target的位置. 每次你可以选择向左或向右移动.第 n 次移动(从 1 开始),可以走 n 步. 返回到达终点需要的最小移动次数 ...

  4. C练题笔记之:Leetcode-12. 整数转罗马数字

    题目: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符          数值 I             1 V             5 X             1 ...

  5. C练题笔记之:Leetcode-307. 区域和检索 - 数组可修改

    题目: 给你一个数组 nums ,请你完成两类查询. 其中一类查询要求 更新 数组 nums 下标对应的值 另一类查询要求返回数组 nums 中索引 left 和索引 right 之间( 包含 )的n ...

  6. C练题笔记之:Leetcode-303. 区域和检索 - 数组不可变

    题目: 给定一个整数数组  nums,处理以下类型的多个查询: 计算索引 left 和 right (包含 left 和 right)之间的 nums 元素的 和 ,其中 left <= rig ...

  7. C练题笔记之:Leetcode-662. 二叉树最大宽度

    题目: 给你一棵二叉树的根节点 root ,返回树的 最大宽度 . 树的 最大宽度 是所有层中最大的 宽度 . 每一层的 宽度 被定义为该层最左和最右的非空节点(即,两个端点)之间的长度.将这个二叉树 ...

  8. C练题笔记之:Leetcode-793. 阶乘函数后 K 个零

    题目: f(x) 是 x! 末尾是 0 的数量.回想一下 x! = 1 * 2 * 3 * ... * x,且 0! = 1 . 例如, f(3) = 0 ,因为 3! = 6 的末尾没有 0 :而 ...

  9. C练题笔记之:Leetcode-654. 最大二叉树

    题目: 给定一个不重复的整数数组 nums . 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值. 递归地在最大值 左边 的 子数组前缀上 构建左子 ...

最新文章

  1. 两个列向量相乘怎么计算_矩阵:行主序、列主序、行向量、列向量
  2. 前沿 | DeepMind改进超参数优化:遗传算法效果超越贝叶斯
  3. 模拟整个地球:英伟达Earth-2超级计算机即将上线
  4. 剑指offer 28:字符串的排列
  5. 10 个经典的 Java 集合面试题,看你能否答得上来?
  6. Linux netstat查看网络连接信息
  7. boost::system::error_category相关的测试程序
  8. 用window.location.href实现页面跳转
  9. 训练中Loss为Nan的原因,梯度消失或者爆炸的优化
  10. matlab实现图片类型的转换
  11. 知识蒸馏方法的演进历史综述
  12. 《菜菜的机器学习sklearn课堂,孔浩Java视频百度云盘
  13. 大学“电路分析基础”试题合集第八章
  14. java动态生成HTML文件
  15. android rs232串口协议,RS232串口协议详解
  16. Some file crunching failed, see logs for details解决办法
  17. 域名检测监控报警系统
  18. 百度网盘解析加速网页版[演示站可用]
  19. 【STM32】标准库与HAL库对照学习教程六--位带操作
  20. WORD转PDF时候出现空白页的解决办法

热门文章

  1. 华为数据中心网络设备例行维护
  2. splint安装与配置
  3. Windows10 alt+table 错乱问题修复
  4. Chrome插件之ModHeader
  5. MATLAB入门教程(4):矩阵的生成
  6. 人工智能走过了怎样的70年?
  7. 电脑重装系统win11如何更改默认下载路径
  8. 全球与中国市场植物(HPMC)胶囊前景展望与十四五趋势预测报告2022年版
  9. iPhone X UITabBarController UITabBar 适配解读
  10. 一个程序员靠一段Java代码,在几小时之内就赚了500美元