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.
可以同時(shí)接2個(gè)不同類型的咖啡,也可以只接一種咖啡;
那么我們?nèi)绾伪WC接的次數(shù)最少,就要同時(shí)接2種咖啡的次數(shù)最多即可;
所以每次都要去看剩下的是哪2種咖啡剩的最多,所以每接一次就要排一次序,
于是就想到了優(yōu)先隊(duì)列,只是排序的規(guī)則是從大到小,而不是從小到大,
所以需要重寫一下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.