1833.Maximum Ice Cream Bars === ###### tags: `Medium`,`Array`,`Greedy`,`Sorting` [1833. Maximum Ice Cream Bars](https://leetcode.com/problems/maximum-ice-cream-bars/) ### 題目描述 It is a sweltering summer day, and a boy wants to buy some ice cream bars. At the store, there are `n` ice cream bars. You are given an array `costs` of length `n`, where `costs[i]` is the price of the i^th^ ice cream bar in coins. The boy initially has `coins` coins to spend, and he wants to buy as many ice cream bars as possible. Return *the **maximum** number of ice cream bars the boy can buy with* `coins` *coins*. **Note:** The boy can buy the ice cream bars in any order. ### 範例 **Example 1:** ``` Input: costs = [1,3,2,4,1], coins = 7 Output: 4 Explanation: The boy can buy ice cream bars at indices 0,1,2,4 for a total price of 1 + 3 + 2 + 1 = 7. ``` **Example 2:** ``` Input: costs = [10,6,8,7,7,8], coins = 5 Output: 0 Explanation: The boy cannot afford any of the ice cream bars. ``` **Example 3:** ``` Input: costs = [1,6,3,1,2,5], coins = 20 Output: 6 Explanation: The boy can buy all the ice cream bars for a total price of 1 + 6 + 3 + 1 + 2 + 5 = 18. ``` **Constraints**: * `costs.length` == `n` * 1 <= `n` <= 10^5^ * 1 <= `costs[i]` <= 10^5^ * 1 <= `coins` <= 10^8^ ### 解答 #### Javascript ```javascript= function maxIceCream(costs, coins) { costs.sort((a, b) => a - b); let count = 0; let sum = 0; for (const cost of costs) { if (coins >= sum + cost) { sum += cost; count++; } } return count; } ``` Time: $O(nlogn)$ > 居然這樣也過 > [name=Marsgoat] [time= Jan 6, 2023] #### Python ```python= class Solution: def maxIceCream(self, costs: List[int], coins: int) -> int: costs.sort() ans = 0 for cost in costs: if coins - cost < 0: break coins -= cost ans += 1 return ans ``` 發現象牙運算子是一行神器的我: ```python= class Solution: def maxIceCream(self, costs: List[int], coins: int) -> int: return sum(1 for cost in sorted(costs) if (coins := coins - cost) >= 0) ``` > [name=Ron Chen][time= Jan 6, 2023] > ### Reference [回到題目列表](https://hackmd.io/@Marsgoat/leetcode_every_day)