https://leetcode.cn/problems/minimum-amount-of-time-to-fill-cups/
如果需要时长最短,当然要尽可能多的满足在同一时间段内,可以装两杯水。同时,有一个需要注意的问题,假设温水有100杯,热水加冷水一共20杯,那么这时候还需要计算么?不需要,因为没有可优化的空间了,所以直接返回100就好。可以大大降低程序耗时。所以就保留三个数字的最大值,然后消耗其他两个数字,直到其他两个数字之和小于最大值,直接返回消耗的次数+最大值即可。
上代码
class Solution {
public int fillCups(int[] amount) {
int max=amount[0];
if(amount[1]>max){
max=amount[1];
}
if(amount[2]>max){
max=amount[2];
}
int sum=0;
for (int i : amount) {
sum=sum+i;
}
sum=sum-max;
if(max>sum){
return max;
}
int count=0;
while(max<sum){
sum=sum-2;
count++;
}
return count+max;
}
}