题目:TapeEquilibrium
思路:
- 细心观察会发现,其实每次两个值的差delta就是上一个差减去2倍的下一个数
- 举个路子说明,比如数组
A=[3, 1, 2, 4, 3],第一个差值是|3-10|=7,第二个差值是|4-9|=5,其实5=7-2*A[1],那么下一个差值就是|5-2*A[2]|=1 - 注意耗时就行
解答:
function solution(A) {
var sum = A.reduce(function(a,b){return a+b})
var min = Math.abs(sum-2*A[0])
for(var p = 0 ; p < A.length-1;p++){
sum -= 2*A[p]
var delta = Math.abs(sum)
if(delta < min){
min = delta
}
}
return min
}

本文介绍了如何解决Codility的TapeEquilibrium问题。通过观察,发现每次两个值的差值等于上一个差值减去2倍的下一个数。通过这个规律,可以有效地计算数组中所有连续子数组的差值之最小绝对值。


被折叠的 条评论
为什么被折叠?



