题目链接:3074. 重新分装苹果(简单)
算法原理:
解法:贪心
4ms击败53.23%
时间复杂度O(Nlogn)
把所有苹果全堆在一起,先装大箱子,再装小箱子,总箱子数-剩下的箱子数就是用的箱子数
Java代码:
class Solution { public int minimumBoxes(int[] apple, int[] capacity) { int sum=0; //先把所有苹果堆一起 for(int x:apple) sum+=x; Arrays.sort(capacity); int m=capacity.length; int i=m-1;//先装大箱子,再装小箱子 //还有箱子就继续装 while(sum>0) sum-=capacity[i--]; return m-1-i;//用的箱子数=总箱子数-剩下的箱子数 } }