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);
} }

最新文章

  1. 利用android来赚钱
  2. android实现程序开机自启动
  3. Android DDMS检测内存泄露
  4. linux中关于php和nginx用户权限的一些东西
  5. netty4 断线重连
  6. poj2750 线段树 +DP Potted Flower
  7. tomcat在linux中的启动和查看相关信息
  8. Moss 几个编程技巧
  9. java打jar包
  10. Openfire3.9.1+jdk1.7导入到eclipse中
  11. 【渗透课程】前言-揭开Web渗透与安全的面纱(必看)
  12. 使用MTL库求解最小二乘解
  13. VS Less Compiler插件使用
  14. 算法练习LeetCode初级算法之设计问题
  15. Linux系统安装和网络配置
  16. 修改userdata的分区大小【转】
  17. MySQL设置白名单教程
  18. python学习之老男孩python全栈第九期_day013知识点总结
  19. python爬虫错误
  20. Calendar时间操作

热门文章

  1. 手把手教你进行Scrapy中item类的实例化操作
  2. 使用Android studio过程中发现的几个解决R变红的办法
  3. Coursera课程笔记----计算导论与C语言基础----Week 5
  4. 组合模式(c++实现)
  5. 局域网ip地址扫描_v1版本
  6. Java语言简介、基础组成、封装、继承、多态、抽象类、内部类、接口
  7. Mybatis 快速入门(XML方式)第一天
  8. linux-rpm强制安装跳过依赖包
  9. 记一次Oracle分区表全局索引重建的过程
  10. Dynamics 365 联系人Contact的快速创建窗体,如何知道父窗体是哪个实体,通过window.top.parent.Xrm.Page.getUrl()可以知道父窗体的URL