思路
将beans的每个数值当做袋子最后豆子剩余数,选择取豆子最少的一种方案
解题方法
//从小到大,将每个beans[i]作为剩余豆子数
//对于beans[i],i之前的全为零,i之后的全变为beans[i]
ans=Math.min(ans,sum-(beans.length-i)*beans[i]);//sum-(beans.length-i)*beans[i]表示取走的豆子总数
时间复杂度: O(n)
空间复杂度: O(1)
Code
class Solution {
public long minimumRemoval(int[] beans) {
Arrays.sort(beans);
long sum =0;
for(int num:beans)sum+=num;
long ans=sum;
for(int i=0;i< beans.length;++i){
//从小到大,将每个beans[i]作为剩余豆子数
//对于beans[i],i之前的全为零,i之后的全变为beans[i]
ans=Math.min(ans,sum-(long)(beans.length-i)*beans[i]);//sum-(beans.length-i)*beans[i]表示取走的豆子总数
}
return ans;
}
}
注:参考了答案。。。。。。。