思路
将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;}
}
注:参考了答案。。。。。。。