2
* @param {number[]} piles6
var minStoneSum = function (piles, k) {7
const heap = new Heap(piles);11
//TAKE THE TOP MAX VALUE TO REDUCE12
let top = heap.dequeue();13
let updated = top - ~~(top / 2);15
//IF AFTER UPDATION VALUE IS NOT 0 THEN INSERT AGAIN17
heap.enqueue(updated);21
return heap.getTree().reduce((acc, v) => acc + v, 0);25
constructor(list = []) {32
for (let priority of this.list) this.enqueue(priority);36
[this.tree[pos1], this.tree[pos2]] = [this.tree[pos2], this.tree[pos1]];40
this.tree[this.tree.length] = priority;41
let i = this.tree.length - 1,44
if (this.tree[parent] < this.tree[i]) this.swap(parent, i);51
let size = this.tree.length - 1,55
let last = this.tree.pop(),56
deleted = this.tree[pos];58
if (!deleted && last) return last;60
this.tree[pos] = last;66
if (pos > this.tree.length) return;67
let leftPos = 2 * pos,68
rightPos = 2 * pos + 1;70
let left = this.tree[leftPos] ? this.tree[leftPos] : -Infinity;71
let right = this.tree[rightPos] ? this.tree[rightPos] : -Infinity,82
if (this.tree[pos] < minVal) {83
this.swap(pos, minIndex);84
this.heapify(minIndex);89
return this.tree.slice(1);93
return this.tree.length - 1;