Welcome to Subscribe On Youtube
2335. Minimum Amount of Time to Fill Cups
Description
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.
Constraints:
amount.length == 3
0 <= amount[i] <= 100
Solutions
-
class Solution { public int fillCups(int[] amount) { int ans = 0; while (amount[0] + amount[1] + amount[2] > 0) { Arrays.sort(amount); ++ans; amount[2]--; amount[1] = Math.max(0, amount[1] - 1); } return ans; } }
-
class Solution { public: int fillCups(vector<int>& amount) { int ans = 0; while (amount[0] + amount[1] + amount[2]) { sort(amount.begin(), amount.end()); ++ans; amount[2]--; amount[1] = max(0, amount[1] - 1); } return ans; } };
-
class Solution: def fillCups(self, amount: List[int]) -> int: ans = 0 while sum(amount): amount.sort() ans += 1 amount[2] -= 1 amount[1] = max(0, amount[1] - 1) return ans
-
func fillCups(amount []int) int { ans := 0 for amount[0]+amount[1]+amount[2] > 0 { sort.Ints(amount) ans++ amount[2]-- if amount[1] > 0 { amount[1]-- } } return ans }
-
function fillCups(amount: number[]): number { amount.sort((a, b) => a - b); let [a, b, c] = amount; let diff = a + b - c; if (diff <= 0) return c; else return Math.floor((diff + 1) / 2) + c; }
-
impl Solution { pub fn fill_cups(mut amount: Vec<i32>) -> i32 { amount.sort(); let dif = amount[0] + amount[1] - amount[2]; if dif <= 0 { return amount[2]; } (dif + 1) / 2 + amount[2] } }