昨天有人问我这个问题。我必须编写代码将数组分为两部分,以使这两部分之和之间的差异最小。
这是我写的复杂度为O(n)的代码
function solution(a) {
let leftSum = 0;
let rightSum = a.reduce((acc, value) => acc + value ,0);
let min = Math.abs(rightSum - leftSum);
a.forEach((item, i) => {
leftSum += a[i];
rightSum -= a[i];
const tempMin = Math.abs(rightSum - leftSum);
if(tempMin < min) min = tempMin;
})
return min;
}
Run Code Online (Sandbox Code Playgroud)
但是随后我被问到输入数组的长度是否为1000万,如何在分布式环境中解决此问题?
我是分布式编程的新手,在这方面需要帮助。
javascript algorithm distributed distributed-computing distributed-system