C练题笔记之:Leetcode-780. 到达终点
题目:
给定四个整数 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. 到达终点相关推荐
- Java实现 LeetCode 780 到达终点(逻辑题)
780. 到达终点 从点 (x, y) 可以转换到 (x, x+y) 或者 (x+y, y). 给定一个起点 (sx, sy) 和一个终点 (tx, ty),如果通过一系列的转换可以从起点到达终点,则 ...
- LeetCode 754. 到达终点数字(数学推理)
1. 题目 在一根无限长的数轴上,你站在0的位置.终点在target的位置. 每次你可以选择向左或向右移动.第 n 次移动(从 1 开始),走 n 步. 返回到达终点需要的最小移动次数. 示例 1: ...
- Java实现 LeetCode 754 到达终点数字(暴力+反向)
754. 到达终点数字 在一根无限长的数轴上,你站在0的位置.终点在target的位置. 每次你可以选择向左或向右移动.第 n 次移动(从 1 开始),可以走 n 步. 返回到达终点需要的最小移动次数 ...
- C练题笔记之:Leetcode-12. 整数转罗马数字
题目: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 1 ...
- C练题笔记之:Leetcode-307. 区域和检索 - 数组可修改
题目: 给你一个数组 nums ,请你完成两类查询. 其中一类查询要求 更新 数组 nums 下标对应的值 另一类查询要求返回数组 nums 中索引 left 和索引 right 之间( 包含 )的n ...
- C练题笔记之:Leetcode-303. 区域和检索 - 数组不可变
题目: 给定一个整数数组 nums,处理以下类型的多个查询: 计算索引 left 和 right (包含 left 和 right)之间的 nums 元素的 和 ,其中 left <= rig ...
- C练题笔记之:Leetcode-662. 二叉树最大宽度
题目: 给你一棵二叉树的根节点 root ,返回树的 最大宽度 . 树的 最大宽度 是所有层中最大的 宽度 . 每一层的 宽度 被定义为该层最左和最右的非空节点(即,两个端点)之间的长度.将这个二叉树 ...
- C练题笔记之:Leetcode-793. 阶乘函数后 K 个零
题目: f(x) 是 x! 末尾是 0 的数量.回想一下 x! = 1 * 2 * 3 * ... * x,且 0! = 1 . 例如, f(3) = 0 ,因为 3! = 6 的末尾没有 0 :而 ...
- C练题笔记之:Leetcode-654. 最大二叉树
题目: 给定一个不重复的整数数组 nums . 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值. 递归地在最大值 左边 的 子数组前缀上 构建左子 ...
最新文章
- 两个列向量相乘怎么计算_矩阵:行主序、列主序、行向量、列向量
- 前沿 | DeepMind改进超参数优化:遗传算法效果超越贝叶斯
- 模拟整个地球:英伟达Earth-2超级计算机即将上线
- 剑指offer 28:字符串的排列
- 10 个经典的 Java 集合面试题,看你能否答得上来?
- Linux netstat查看网络连接信息
- boost::system::error_category相关的测试程序
- 用window.location.href实现页面跳转
- 训练中Loss为Nan的原因,梯度消失或者爆炸的优化
- matlab实现图片类型的转换
- 知识蒸馏方法的演进历史综述
- 《菜菜的机器学习sklearn课堂,孔浩Java视频百度云盘
- 大学“电路分析基础”试题合集第八章
- java动态生成HTML文件
- android rs232串口协议,RS232串口协议详解
- Some file crunching failed, see logs for details解决办法
- 域名检测监控报警系统
- 百度网盘解析加速网页版[演示站可用]
- 【STM32】标准库与HAL库对照学习教程六--位带操作
- WORD转PDF时候出现空白页的解决办法