【LeetCode】 365. Water and Jug Problem 水壶问题(Medium)(JAVA)

【LeetCode】 365. Water and Jug Problem 水壶问题(Medium)(JAVA)

题目地址: https://leetcode.com/problems/water-and-jug-problem/

题目描述:

You are given two jugs with capacities x and y litres. There is an infinite amount of water supply available. You need to determine whether it is possible to measure exactly z litres using these two jugs.

If z liters of water is measurable, you must have z liters of water contained within one or both buckets by the end.

Operations allowed:

Fill any of the jugs completely with water.
Empty any of the jugs.
Pour water from one jug into another till the other jug is completely full or the first jug itself is empty.

Example 1: (From the famous “Die Hard” example)

Input: x = 3, y = 5, z = 4
Output: True

Example 2:

Input: x = 2, y = 6, z = 5
Output: False

题目大意

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

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

解题方法

1、根据最小公倍数可知: ax + by = cz,所以只要求出最小公倍数即可
2、最后请用以上水壶中的一或两个来盛放取得的 z升 水,所以 x + y >= z

class Solution {
    public boolean canMeasureWater(int x, int y, int z) {
        if (z == 0) return true;
        return (x + y) >= z && z % gcd(x, y) == 0;
    }

    public int gcd(int a, int b) {
        return b == 0 ? a : gcd(b, a % b);
    }
}

执行用时 : 0 ms, 在所有 Java 提交中击败了 100.00% 的用户
内存消耗 : 36.2 MB, 在所有 Java 提交中击败了 13.93% 的用户

发布了95 篇原创文章 · 获赞 6 · 访问量 2803

猜你喜欢

转载自blog.csdn.net/qq_16927853/article/details/105004816