周賽388。

題目

輸入長度 n 的整數陣列 apple,還有長度 m 的整數陣列 capacity。

總共有 n 袋蘋果,其中 apple[i] 代表第 i 袋裡面個蘋果數。
箱子有 m 個,其中 capacity。[i] 代表第 i 箱可容納的蘋果的數。

最少需要幾個箱子,才能把所有蘋果都裝箱。

注意:來自同一袋子蘋果可以分裝到不同箱子。

解法

先看有多少蘋果。
把箱子排序,從最大的箱子開始裝即可。

時間複雜度 O(n + m log m)。
空間複雜度 O(1)。

class Solution:
    def minimumBoxes(self, apple: List[int], capacity: List[int]) -> int:
        need = sum(apple)
        capacity.sort()
        
        ans = 0
        while need > 0:
            need -= capacity.pop()
            ans += 1
            
        return ans