题目描述:
有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水?
如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水。
你允许:

装满任意一个水壶
清空任意一个水壶
从一个水壶向另外一个水壶倒水,直到装满或者倒空

示例1:

输入: x = 3, y = 5, z = 4
输出: True

示例2:

输入: x = 2, y = 6, z = 5
输出: False

解题思路:

水壶问题就是两个壶的最小公约数与想得到的水的升数是否成倍数问题(除去几个特殊情况,特殊情况在代码中有写到)
当z是最小公约数的整数倍时,可以利用两个壶经行迭代,得到最小公约数的倍数关系的容量

代码:

class Solution:def canMeasureWater(self, x: int, y: int, z: int) -> bool:#这里我们排除需要得到0升水的情况和恰好有一个壶的容量跟目标一致的情况if z == 0 or z == x or z == y  :  return True #判断是否超出最大量取容量,超过了就取不到了,应为只有两个壶if z > x + y :return False#这里用到了math库中的最小公约数方法gcd,如果z是最小公约的整数倍关系的时候,就可以取到return z % math.gcd(x,y) == 0

LeetCode 365水壶问题(python)相关推荐

  1. Leetcode.365 水壶问题

    题目链接 Leetcode.365 水壶问题 mid 题目描述 有两个水壶,容量分别为 x和 y升.水的供应是无限的.确定是否有可能使用这两个壶准确得到 z升. 如果可以得到 z升水,最后请用以上水壶 ...

  2. LeetCode 365. 水壶问题

    365. 水壶问题 题目链接-365. 水壶问题 解题思路 裴蜀定理 裴蜀等式:若a,ba,ba,b是整数,且gcd(a,b)=dgcd(a,b)=dgcd(a,b)=d,那么对于任意的整数x,yx, ...

  3. LeetCode —— 365. 水壶问题(Python3)

    有两个容量分别为 x升 和 y升 的水壶以及无限多的水.请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水? 如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升水. 你允许: 装满任意一 ...

  4. LeetCode 365. 水壶问题(最大公约数)

    文章目录 1. 题目 2. 最大公约数 1. 题目 有两个容量分别为 x升 和 y升 的水壶以及无限多的水.请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水? 如果可以,最后请用以上水壶中的 ...

  5. 每日一题-leetcode 365. 水壶问题

    有两个水壶,容量分别为 jug1Capacity 和 jug2Capacity 升.水的供应是无限的.确定是否有可能使用这两个壶准确得到 targetCapacity 升. 如果可以得到 target ...

  6. Leetcode 365.水壶问题

    水壶问题 有两个容量分别为 x升和 y升的水壶以及无限多的水.请判断能否通过使用这两个水壶,从而可以得到恰好 z升的水? 如果可以,最后请用以上水壶中的一或两个来盛放取得的 z升 水. 你允许: 装满 ...

  7. LeetCode——365.水壶问题【贝祖定理】

    题解 AC-Code using PII = pair<int, int>;class Solution {public:bool canMeasureWater(int x, int y ...

  8. leetcode:365. 水壶问题【肥鼠定理,栈模拟dfs】

    分析:数学 显然最后的z是a和b的线性组合 也就是ax + by = z也就是说z是(a,b)的倍数 那就直接用gcd就好了 加个特判 ac code class Solution:def canMe ...

  9. [LeetCode解题报告] 365. 水壶问题

    [LeetCode解题报告] 365. 水壶问题 一. 题目 1. 题目描述 2. 原题链接 二. 解题报告 1. 思路分析 2. 复杂度分析 3. 代码实现 三. 本题小结 一. 题目 1. 题目描 ...

最新文章

  1. linux 修改主机名 修改ip
  2. 自定义Visual Studio IntelliTrace 智能跟踪
  3. 版权之争,谁更棋高一着?
  4. 解决listview中的textview设置了setMovementMethod导致onItemclick无效的问题
  5. 数据结构之外部排序:置换-选择排序
  6. 很经典的独白,搞网络的童鞋们,你们懂得
  7. 揭秘成为最牛程序员的五大要诀
  8. ubuntu 18.04忘记登录密码的破解方法
  9. mapxtreme2008 7.0错误
  10. 《疯狂的程序员64》读后感
  11. 360浏览器在b站看直播html5,用360浏览器看Bilibili视频很卡怎么办_360浏览器看B站视频卡如何解决-win7之家...
  12. 9.1 Servlet容器实例
  13. 华氏温度与摄氏温度转换 java_用JAVA写一个将华氏温度转换成摄氏温度的程序
  14. 根据身份证号计算年龄 15位或18位身份证号的年龄计算方法
  15. Alien Skin Exposure v6.x 最新通用完整版汉化补丁
  16. 蓝凌OA系统任意文件读取
  17. 石溪分校 计算机研究生专业,美国纽约州立大学石溪分校专业设置与学制(本科生/研究生)...
  18. 什么是代码签名?代码签名的好处
  19. Java 用Freemarker完美导出word文档(带图片)
  20. 将numeric转换为数据类型numeric是出现算术溢出错误

热门文章

  1. CC2640R2F BLE5.0 BLE吞吐量测试
  2. 设计模式--生成器模式
  3. python第8周 作业
  4. 你的设备中缺少重要的安全和质量修复
  5. systemctl mask和systemctl disable有什么区别?
  6. sql注入 union联合查询注入(超详细)
  7. 2017双十一复盘--开发经验总结
  8. 洛谷 P2704 炮兵阵地 题解
  9. HackTheBox-关卡Fawn
  10. 手把手教你五分钟扒个源码写个无敌外挂