方法:数学法
我们先设beans 数组的长度为 b.
由提示1可得,最少的豆子数量为:
我们可以对 beans 数组升序排序。那么对于排序后数组下标为 i 的元素,对应的转变为
。在对数组进行遍历维持上式最小值即可。
代码如下:
class Solution {
public long minimumRemoval(int[] beans) {
int b = beans.length;
Arrays.sort(beans);
long total = 0;
for(int i = 0; i < b; i++)
{
total += beans[i];
}
long remove = total;
for (int i = 0; i < b; i++)
{
remove = Math.min(remove, total - (long)beans[i] * (b - i));
}
return remove;
}
}