Java实现 LeetCode 780 到达终点(逻辑题)
2024-09-05 01:46:43
780. 到达终点
从点 (x, y) 可以转换到 (x, x+y) 或者 (x+y, y)。
给定一个起点 (sx, sy) 和一个终点 (tx, ty),如果通过一系列的转换可以从起点到达终点,则返回 True ,否则返回 False。
示例:
输入: sx = 1, sy = 1, tx = 3, ty = 5
输出: True
解释:
可以通过以下一系列转换从起点转换到终点:
(1, 1) -> (1, 2)
(1, 2) -> (3, 2)
(3, 2) -> (3, 5)
输入: sx = 1, sy = 1, tx = 2, ty = 2
输出: False
输入: sx = 1, sy = 1, tx = 1, ty = 1
输出: True
注意:
sx, sy, tx, ty 是范围在 [1, 10^9] 的整数。
PS:
正规套路应该是递归
但是!!!
他这个题不正规,所以只能反过来想
从结束点找出发点
class Solution {
public boolean reachingPoints(int sx, int sy, int tx, int ty) {
while (tx >= sx && ty >= sy) {
if (tx == ty) break;
//如果tx>ty 只能是(x+y,y)过来的
if (tx > ty) {
//如果结束点的y大于出发点的y
//tx是x+y来的,所以%y,就是求出原x
if (ty > sy) tx %= ty;
//反过来的话,起始点和结束点的y已经一致了
//只需要看加上的是不是y的倍数
//tx-sx这里就是n多个y,看他%y是不是能全部%掉
else return (tx - sx) % ty == 0;
} else {
if (tx > sx) ty %= tx;
else return (ty - sy) % tx == 0;
}
}
return (tx == sx && ty == sy);
}
}
最新文章
- 利用android来赚钱
- android实现程序开机自启动
- Android DDMS检测内存泄露
- linux中关于php和nginx用户权限的一些东西
- netty4 断线重连
- poj2750 线段树 +DP Potted Flower
- tomcat在linux中的启动和查看相关信息
- Moss 几个编程技巧
- java打jar包
- Openfire3.9.1+jdk1.7导入到eclipse中
- 【渗透课程】前言-揭开Web渗透与安全的面纱(必看)
- 使用MTL库求解最小二乘解
- VS Less Compiler插件使用
- 算法练习LeetCode初级算法之设计问题
- Linux系统安装和网络配置
- 修改userdata的分区大小【转】
- MySQL设置白名单教程
- python学习之老男孩python全栈第九期_day013知识点总结
- python爬虫错误
- Calendar时间操作
热门文章
- 手把手教你进行Scrapy中item类的实例化操作
- 使用Android studio过程中发现的几个解决R变红的办法
- Coursera课程笔记----计算导论与C语言基础----Week 5
- 组合模式(c++实现)
- 局域网ip地址扫描_v1版本
- Java语言简介、基础组成、封装、继承、多态、抽象类、内部类、接口
- Mybatis 快速入门(XML方式)第一天
- linux-rpm强制安装跳过依赖包
- 记一次Oracle分区表全局索引重建的过程
- Dynamics 365 联系人Contact的快速创建窗体,如何知道父窗体是哪个实体,通过window.top.parent.Xrm.Page.getUrl()可以知道父窗体的URL