LeetCode 每日一题 - 3074. 重新分装苹果

终于等到简单题当每日一题了,直接重拳出击

有一说一,如果苹果不可分的话就应该算困难题了

题面

给你一个长度为  n  的数组  apple  和另一个长度为  m  的数组  capacity 。

一共有  n  个包裹,其中第  i  个包裹中装着  apple[i]  个苹果。同时,还有  m  个箱子,第  i  个箱子的容量为  capacity[i]  个苹果。

请你选择一些箱子来将这  n  个包裹中的苹果重新分装到箱子中,返回你需要选择的箱子的  最小  数量。

注意,同一个包裹中的苹果可以分装到不同的箱子中。

示例 1:

输入: apple = [1,3,2], capacity = [4,3,1,5,2]

输出: 2

解释: 使用容量为 4 和 5 的箱子。

总容量大于或等于苹果的总数,所以可以完成重新分装。

示例 2:

输入: apple = [5,5,5], capacity = [2,4,2,7]

输出: 4

解释: 需要使用所有箱子。

提示:

  • 1 <= n == apple.length <= 50
  • 1 <= m == capacity.length <= 50
  • 1 <= apple[i], capacity[i] <= 50
  • 输入数据保证可以将包裹中的苹果重新分装到箱子中。

代码

class Solution {
public:
    static bool cmp(int a,int b){
        return a > b;
    }
    int minimumBoxes(vector<int>& apple, vector<int>& capacity) {
        // sort(apple.begin(), apple.end(), cmp);
        int apples = 0;
        for(int i=0;i<apple.size();i++){
            apples+=apple[i];
        }
        sort(capacity.begin(), capacity.end(), cmp);
        int ans = -1;
        for(int i=0;i<capacity.size();i++){
            if(apples - capacity[i] <= 0){
                ans = i + 1;
                break;
            }
            apples -= capacity[i];
        }
        return ans;
    }
};

后记

水题莫多莫多

Just Programming With ♥️ & Peace
使用 Hugo 构建
主题 StackJimmy 设计