美文网首页
【leetcode每日一刷】2020-03-20,365. 水壶

【leetcode每日一刷】2020-03-20,365. 水壶

作者: _SHIZI | 来源:发表于2020-03-21 23:12 被阅读0次

有两个容量分别为 x升 和* y*升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水?

如果可以,最后请用以上水壶中的一或两个来盛放取得的 *z升 *水。

你允许:

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

示例 1: (From the famous "Die Hard" example)

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

示例 2:

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

https://leetcode-cn.com/problems/water-and-jug-problem/

在任意一个时刻,我们可以且仅可以采取以下几种操作:

1.把 X 壶的水灌进 Y 壶,直至灌满或倒空;
总量不变
2.把 Y 壶的水灌进 X 壶,直至灌满或倒空;
总量不变
3.把 X 壶灌满;
+x
4.把 Y 壶灌满;
+y
5.把 X 壶倒空;
-x
6.把 Y 壶倒空。
-y

可以得出结论,最终的水量始终是aX+bY,贝祖定理告诉我们, ax+by=z 有解当且仅当 z 是 x,y 的最大公约数的倍数

class Solution {
public:
    bool canMeasureWater(int x, int y, int z) {
        if ( x== 0 && y == 0) { return z == 0; } 
        if (z > x + y) { return false; }
        return z % __gcd(x,y)  == 0;
    }
};

相关文章

  • 【leetcode每日一刷】2020-03-20,365. 水壶

    有两个容量分别为 x升 和* y*升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 ...

  • leetcode 365. 水壶问题

    这道题我没有提交,原因是我还不能完全理解。

  • LeetCode 365. 水壶问题

    有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升 的水...

  • LeetCode 365.水壶问题

    题目 水壶问题链接可能点不进去,所以我把完整的题目写在了下面。 分析 题意非常清晰,没有异议。对于示例 1我们可以...

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

    有两个水壶,容量分别为 jug1Capacity 和 jug2Capacity 升。水的供应是无限的。确定是否有可...

  • LeetCode-python 365. 水壶问题

    题目链接[https://leetcode.cn/problems/water-and-jug-problem] ...

  • 365. 水壶问题

    【Description】有两个容量分别为 x升 和* y*升 的水壶以及无限多的水。请判断能否通过使用这两个水壶...

  • 365.水壶问题

    解题思路 裴蜀定理(或贝祖定理),说明了对任何整数a、b和它们的最大公约数d,关于未知数x和y的线性不定方程(称为...

  • 365. 水壶问题

    题目 有两个容量分别为 x升 和 y升 的水壶以及无限多的水。请判断能否通过使用这两个水壶,从而可以得到恰好 z升...

  • 每日一刷leetcode

    1.两数和问题 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 ...

网友评论

      本文标题:【leetcode每日一刷】2020-03-20,365. 水壶

      本文链接:https://www.haomeiwen.com/subject/nkupyhtx.html