本文主要是介绍leetcode 第388场周赛第一题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这里用贪心的算法就很容易能够算出来结果。
思路:我们知道,要想装的箱子数最少,我们需要先把大容量的箱子用上,然后再用小的这样才能实现局部最优。
那么我们直接对于箱子的容量进行排序,然后从大容量的箱子开始装就行了,至于苹果我们也是从包裹的苹果数多的开始装。
注意:每个包裹的苹果数是可以拆开的,所以不用考虑不必要的可能性:
class Solution {
public:int minimumBoxes(vector<int>& apple, vector<int>& capacity) {int n=apple.size();int m=capacity.size();int count=0;int sum=0;sort(capacity.begin(),capacity.end(),greater<int>());for(int i=0;i<n;i++)sum+=apple[i];for(int i=0;i<m,sum>0;i++){sum-=capacity[i];count++;}return count;}
};
这篇关于leetcode 第388场周赛第一题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!