有两个水壶,容量分别为 jug1Capacity 和 jug2Capacity 升。水的供应是无限的。确定是否有可能使用这两个壶准确得到
targetCapacity 升。如果可以得到 targetCapacity 升水,最后请用以上水壶中的一或两个来盛放取得的 targetCapacity 升水。
你可以:
装满任意一个水壶 清空任意一个水壶 从一个水壶向另外一个水壶倒水,直到装满或者倒空
示例 1:
输入: jug1Capacity = 3, jug2Capacity = 5, targetCapacity = 4
输出: true
解释:来自著名的 “Die Hard”
示例 2:
输入: jug1Capacity = 2, jug2Capacity = 6, targetCapacity = 5
输出: false
示例 3:
输入: jug1Capacity = 1, jug2Capacity = 2, targetCapacity = 3
输出: true
提示:
1 <= jug1Capacity, jug2Capacity, targetCapacity <= 10^6
解题思路:
1、首先俩水壶的水加起来没有要求容量大的话那就没有必要继续看了
2、俩水壶容量大于要求容量,那么最终结果肯定至少有一个水壶没有装满,这就是负数的来源
3、最终结果变成零之后,若再次装水倒水的话又会变成a - b构成了重复
代码:文章来源:https://www.toymoban.com/news/detail-636983.html
class Solution {
public boolean canMeasureWater(int jug1Capacity, int jug2Capacity, int targetCapacity) {
if(jug1Capacity + jug2Capacity < targetCapacity) return false;
int a = Math.max(jug2Capacity, jug1Capacity);
int b = Math.min(jug2Capacity, jug1Capacity);
int c = a + b;
while(c > 0) {
if(c == targetCapacity) return true;
if(c >= b) c = c - b;
else c = c + a;
}
return false;
}
}
文章来源地址https://www.toymoban.com/news/detail-636983.html
到了这里,关于水壶问题(力扣)数学 JAVA的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!