为了得到最大分数,每次都从三堆中拿出数量较大的两堆石子。可以使用最大堆。每次取出较大的两堆,减1之后判断是否为0,不为0继续加入堆中;继续下一次取最大两堆。。。
最大堆的实现专栏前几篇文字已介绍。
除最大堆外的代码:
var maximumScore = function(a, b, c) {
const bh = new MaxBinaryHeap([a, b ,c])
let count = 0
while(bh.length > 1) {
let l1 = bh.pop()
let l2 = bh.pop()
if (--l1 > 0) {
bh.insert(l1)
}
if (--l2 > 0) {
bh.insert(l2)
}
count++
}
return count
};