这个问题在我的面试编码中被问到,有 12 个测试用例,我只能通过其中的 8 个。minSum(List values, int k) 方法需要完成。示例:nums = [10,20,7] 和 k=4 这个数组的答案是 5+5+4=14。每个操作包括从数组中删除元素,将其除以 2 并将该结果的上限插入回数组中。
我的解决方案是这样的:
if (num != null) {
Collections.sort(num);
while (k != 0) {
for (int i = num.size() - 1; i >= 0 && k != 0; i--) {
int number = (int) Math.ceil((double) num.get(i) / 2);
num.set(i, number);
k--;
}
}
}
return getMinSumOfArray(num);
Run Code Online (Sandbox Code Playgroud)
测试用例: nums[2], k= 1 then answer is 1 if nums[2,3], k = 1 then answer is 4
这些是简单的测试用例,但是您需要执行 100000 …