Minimum Rounds to Complete All Tasks

MediumArrayHash TableGreedyCounting

Solution

export function minimumRounds(tasks: number[]): number {
  const counts = new Map<number, number>();
  for (const task of tasks) {
    counts.set(task, (counts.get(task) || 0) + 1);
  }
 
  let minimumRound = 0;
  for (const count of counts.values()) {
    if (count === 1) {
      return -1;
    }
    minimumRound += Math.floor((count + 2) / 3);
  }
 
  return minimumRound;
}