【发布时间】:2021-01-16 07:59:27
【问题描述】:
一个数组被操作 k 次,每次最大值除以 2 并向上取整。在这些 k 操作之后,我需要找到它的最小总和。 k 和数组 num > 1 中的所有数字。方法 minSum 接收一个名为 num 的数组和一个整数 k。对我来说时间复杂度非常差的粗暴 Python 代码是:
function minSum(arr, k) {
// Write your code here
let sum = 0;
while(k !==0){
let max = Math.max(...arr)
let index = arr.indexOf(max);
max = Math.ceil(max/2);
arr[index] = max;
k--;
}
sum = arr.reduce((a, b) => a + b, 0);
console.log(sum);
return sum;
}
与 python 相关的类似问题在这里。 More efficient method of finding minimum sum after k operations
但与 Javascript 无关。
【问题讨论】:
-
您应该选择一种,Java 或 JavaScript,两者是完全不同的语言。然后你应该专注于这个问题,你不能做你需要做的事情?
-
使用优先队列。最大值将在顶部。更改。 PriorityQueue 将自行重新排列。重复此 k 次。这只需要 n log n + k log n。最后你可以总结。 PriorityQueue java
-
最低金额是什么意思?
-
我添加了一个例子。
-
这是一个javascript问题。 Java 与 java 没有关系(或者正如这里的一个人所说,就像“痛苦”与“绘画”的关系一样多)。
标签: javascript algorithm time-complexity space-complexity