博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Swift]LeetCode780. 到达终点 | Reaching Points
阅读量:5233 次
发布时间:2019-06-14

本文共 3203 字,大约阅读时间需要 10 分钟。

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝()
➤GitHub地址:
➤原文地址:  
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

A move consists of taking a point (x, y) and transforming it to either (x, x+y) or (x+y, y).

Given a starting point (sx, sy) and a target point (tx, ty), return True if and only if a sequence of moves exists to transform the point (sx, sy) to (tx, ty). Otherwise, return False.

Examples:Input: sx = 1, sy = 1, tx = 3, ty = 5Output: TrueExplanation:One series of moves that transforms the starting point to the target is:(1, 1) -> (1, 2)(1, 2) -> (3, 2)(3, 2) -> (3, 5)Input: sx = 1, sy = 1, tx = 2, ty = 2Output: FalseInput: sx = 1, sy = 1, tx = 1, ty = 1Output: True

Note:

  • sx, sy, tx, ty will all be integers in the range [1, 10^9].

从点 (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] 的整数。

Runtime: 4 ms
Memory Usage: 18.4 MB
1 class Solution {2     func reachingPoints(_ sx: Int, _ sy: Int, _ tx: Int, _ ty: Int) -> Bool { 3         if tx < sx || ty < sy {
return false}4 if tx == sx && (ty - sy) % sx == 0 {
return true}5 if ty == sy && (tx - sx) % sy == 0 {
return true}6 return reachingPoints(sx, sy, tx % ty, ty % tx) 7 }8 }

4ms

1 class Solution { 2     func reachingPoints(_ sx: Int, _ sy: Int, _ tx: Int, _ ty: Int) -> Bool { 3         var tx = tx, ty = ty 4         while tx >= sx && ty >= sy { 5             if tx == ty {
break} 6 if tx > ty { 7 if ty > sy { 8 tx %= ty 9 } else {10 return (tx - sx) % ty == 011 }12 } else {13 if (tx > sx) {14 ty %= tx15 } else {16 return (ty - sy) % tx == 017 } 18 }19 }20 return false21 }22 }

8ms

1 class Solution { 2     func gcd(_ a: Int, _ b: Int) -> Int { 3         if a < b { 4             return gcd(b, a) 5         } 6         if b == 0 { 7             return a 8         } 9         return gcd(b, a%b)10     }11     12     func reachingPoints(_ sx: Int, _ sy: Int, _ tx: Int, _ ty: Int) -> Bool {13 14         var tx = tx15         var ty = ty16         while tx >= sx && ty >= sy {17             if tx == sx && ty == sy {18                 return true19             }20             if tx > ty {21                 var r = tx%ty22                 if sx > r {23                     return ty == sy && (sx-r)%ty == 024                 }25                 tx = r26             } else {27                 var r = ty%tx28                 if sy > r {29                     return tx == sx && (sy-r)%tx == 030                 }31                 ty = r32             }33         }34         return false35     }36 }

 

转载于:https://www.cnblogs.com/strengthen/p/10542023.html

你可能感兴趣的文章
Centos7 手动编译 RabbitMQ ,并安装php amqp
查看>>
Can't locate Params/Validate.pm in @INC (@INC contains: /usr/local/lib64/perl5 /
查看>>
航空连接器、端子
查看>>
web-场景说明
查看>>
Django模板
查看>>
Python--面向对象进阶
查看>>
信号振铃是怎么产生的------转自于余博士
查看>>
Spring总结六:AOP(面向切面编程)
查看>>
运营社群看这篇就够了,微信群门槛设置,用户思维、流量思维与产品思维
查看>>
MyBatis数据库测试代码自动生成
查看>>
JAVA笔记140-使用this语句解决构造器重载相互调用问题
查看>>
【嵌入式linux】(第三步):安装串口终端 (ubuntu安装minicom串口终端)
查看>>
Android 多媒体MediaPlayer使用详解
查看>>
ubuntu中报错:无法分配内存 (errno=12)
查看>>
Git Bash的妙用 - 使用Linux命令
查看>>
Git 经常用到的命令
查看>>
PHP实现Memcached缓存实例教程
查看>>
mysql索引之失效
查看>>
107. Binary Tree Level Order Traversal II Java Solutions
查看>>
Java_基础篇(数组的反转)
查看>>