终于等到简单题当每日一题了,直接重拳出击
有一说一,如果苹果不可分的话就应该算困难题了
题面
给你一个长度为 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 <= 501 <= m == capacity.length <= 501 <= 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;
}
};
后记
水题莫多莫多