2024-1-18
文章目录
-
-
-
- [[2171. 拿出最少数目的魔法豆](https://leetcode.cn/problems/removing-minimum-number-of-magic-beans/)](#2171. 拿出最少数目的魔法豆)
-
-
2171. 拿出最少数目的魔法豆
思路:
- 对输入的数组进行排序,使得数组中的元素按照升序排列。
- 初始化一个变量s用于存储数组中所有元素的和,并遍历数组将每个元素加到s中,计算数组中所有元素的和。
- 初始化一个变量ans用于存储最终结果,默认值为s。
- 遍历数组中的每个元素,计算移除该元素后,剩余元素的和(即将数组总和减去该元素乘以剩余元素数量),并将其与之前的最小值进行比较取较小值,更新ans。
- 返回最小移除次数,即最小的和值。
java
public long minimumRemoval(int[] beans) {
Arrays.sort(beans); // 对输入数组进行排序,使得数组中的元素按照升序排列
long s = 0; // 初始化一个变量s用于存储数组中所有元素的和
for (int x : beans) {
s += x; // 遍历数组,将每个元素加到s中,计算数组中所有元素的和
}
long ans = s; // 初始化一个变量ans用于存储最终结果,默认值为s
int n = beans.length; // 获取数组的长度
for (int i = 0; i < n; ++i) { // 遍历数组中的每个元素
ans = Math.min(ans, s - (long) beans[i] * (n - i)); // 更新ans,将当前元素与剩余元素的和相减,并与ans比较取较小值
}
return ans; // 返回最小移除次数
}