Maximal Score After Applying K Operations

MediumArrayGreedyHeap (Priority Queue)

Solution

import { Heap } from '@algorithm/lib';
 
export function maxKelements(nums: number[], k: number): number {
  const heap = new Heap<number>((a, b) => b - a);
  nums.forEach((num) => {
    heap.push(num);
  });
 
  let answer = 0;
  for (let i = 0; i < k; i++) {
    const score = heap.pop() ?? 0;
    heap.push(Math.ceil(score / 3));
    answer += score;
  }
  return answer;
}

Complexity

  • Time: O(NlogN + KlogN)
  • Space: O(N)