Last Stone Weight
EasyArrayHeap (Priority Queue)
Solution
import { Heap } from '@algorithm/lib';
export function lastStoneWeight(stones: number[]): number {
const heap = new Heap<number>((a, b) => b - a);
for (const stone of stones) {
heap.push(stone);
}
while (1 < heap.length) {
const [stone1, stone2] = [heap.pop(), heap.pop()];
if (stone1 && stone2 && stone1 !== stone2) {
heap.push(stone1 - stone2);
}
}
return heap.pop() ?? 0;
}