-
Notifications
You must be signed in to change notification settings - Fork 0
/
water-and-jug-problem.java
46 lines (44 loc) · 1.16 KB
/
water-and-jug-problem.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// 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
//
//
//
// Credits:Special thanks to @vinod23 for adding this problem and creating all test cases.
public class Solution {
public boolean canMeasureWater(int x, int y, int z) {
if(x+y<z)return false;
if(x==z||y==z||x+y==z)return true;
return z%gcd(x,y)==0;
}
public int gcd(int x,int y){
while(y!=0){
int temp = y;
y = x%y;
x = temp;
}
return x;
}
}