2279.Maximum Bags With Full Capacity of Rocks === ###### tags: `Medium`,`Array`,`Greedy`,`Sorting` [2279. Maximum Bags With Full Capacity of Rocks](https://leetcode.com/problems/maximum-bags-with-full-capacity-of-rocks/) ### 題目描述 You have `n` bags numbered from `0` to `n - 1`. You are given two **0-indexed** integer arrays `capacity` and `rocks`. The i^th^ bag can hold a maximum of `capacity[i]` rocks and currently contains `rocks[i]` rocks. You are also given an integer `additionalRocks`, the number of additional rocks you can place in **any** of the bags. Return *the **maximum** number of bags that could have full capacity after placing the additional rocks in some bags*. ### 範例 **Example 1:** ``` Input: capacity = [2,3,4,5], rocks = [1,2,4,4], additionalRocks = 2 Output: 3 Explanation: Place 1 rock in bag 0 and 1 rock in bag 1. The number of rocks in each bag are now [2,3,4,4]. Bags 0, 1, and 2 have full capacity. There are 3 bags at full capacity, so we return 3. It can be shown that it is not possible to have more than 3 bags at full capacity. Note that there may be other ways of placing the rocks that result in an answer of 3. ``` **Example 2:** ``` Input: capacity = [10,2,2], rocks = [2,2,0], additionalRocks = 100 Output: 3 Explanation: Place 8 rocks in bag 0 and 2 rocks in bag 2. The number of rocks in each bag are now [10,2,2]. Bags 0, 1, and 2 have full capacity. There are 3 bags at full capacity, so we return 3. It can be shown that it is not possible to have more than 3 bags at full capacity. Note that we did not use all of the additional rocks. ``` **Constraints**: * `n` == `capacity.length` == `rocks.length` * 1 <= `n` <= 5 * 10^4^ * 1 <= `capacity[i]` <= 10^9^ * 0 <= `rocks[i]` <= `capacity[i]` * 1 <= `additionalRocks` <= 10^9^ ### 解答 #### Python ```python= def maximumBags(self, capacity: List[int], rocks: List[int], additionalRocks: int) -> int: sorted_remain_space = sorted( [x-y for x,y in zip(capacity, rocks)] ) rock_cnt = 0 for i in range(len(sorted_remain_space)): if rock_cnt + sorted_remain_space[i] > additionalRocks: return i rock_cnt += sorted_remain_space[i] return len(sorted_remain_space) ``` > [author=m4g0 ] ```python= class Solution: def maximumBags(self, capacity: List[int], rocks: List[int], additionalRocks: int) -> int: remaining_capacity = [c - r for c, r in zip(capacity, rocks)] remaining_capacity = sorted(remaining_capacity) bags = 0 for rc in remaining_capacity: if additionalRocks >= rc: additionalRocks -= rc bags += 1 return bags ``` > [name=Kobe][time=Tue, Dec 27, 2022] ### Reference [回到題目列表](https://hackmd.io/@Marsgoat/leetcode_every_day)