题目: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
}