LeetCode 2335. Minimum Amount of Time to Fill Cups
You have a water dispenser that can dispense cold, warm, and hot water. Every second, you can either fill up 2
cups with different types of water, or 1
cup of any type of water.
You are given a 0-indexed integer array amount
of length 3
where amount[0]
, amount[1]
, and amount[2]
denote the number of cold, warm, and hot water cups you need to fill respectively.
Return the minimum number of seconds needed to fill up all the cups.
Example 1:
Input: amount = [1,4,2]
Output: 4
Explanation:
One way to fill up the cups is:
Second 1: Fill up a cold cup and a warm cup.
Second 2: Fill up a warm cup and a hot cup.
Second 3: Fill up a warm cup and a hot cup.
Second 4: Fill up a warm cup.
It can be proven that 4 is the minimum number of seconds needed.
Example 2:
Input: amount = [5,4,4]
Output: 7
Explanation:
One way to fill up the cups is:
Second 1: Fill up a cold cup, and a hot cup.
Second 2: Fill up a cold cup, and a warm cup.
Second 3: Fill up a cold cup, and a warm cup.
Second 4: Fill up a warm cup, and a hot cup.
Second 5: Fill up a cold cup, and a hot cup.
Second 6: Fill up a cold cup, and a warm cup.
Second 7: Fill up a hot cup.
Example 3:
Input: amount = [5,0,0]
Output: 5
Explanation:
Every second, we fill up a cold cup.
可以同时接2个不同类型的咖啡,也可以只接一种咖啡;
那么我们如何保证接的次数最少,就要同时接2种咖啡的次数最多即可;
所以每次都要去看剩下的是哪2种咖啡剩的最多,所以每接一次就要排一次序,
于是就想到了优先队列,只是排序的规则是从大到小,而不是从小到大,
所以需要重写一下compare的方法就行了;
下面是代码:
Runtime: 3 ms, faster than 35.27% of Java online submissions for Minimum Amount of Time to Fill Cups.
Memory Usage: 40.4 MB, less than 35.50% of Java online submissions for Minimum Amount of Time to Fill Cups.