[Codility]TapeEquilibrium

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

猜你喜欢

转载自blog.csdn.net/qq_41882147/article/details/79654883
今日推荐