Back to all solutions

#1817 - Finding the Users Active Minutes

Problem Description

You are given the logs for users' actions on LeetCode, and an integer k. The logs are represented by a 2D integer array logs where each logs[i] = [IDi, timei] indicates that the user with IDi performed an action at the minute timei.

Multiple users can perform actions simultaneously, and a single user can perform multiple actions in the same minute.

The user active minutes (UAM) for a given user is defined as the number of unique minutes in which the user performed an action on LeetCode. A minute can only be counted once, even if multiple actions occur during it.

You are to calculate a 1-indexed array answer of size k such that, for each j (1 <= j <= k), answer[j] is the number of users whose UAM equals j.

Return the array answer as described above.

Solution

/**
 * @param {number[][]} logs
 * @param {number} k
 * @return {number[]}
 */
var findingUsersActiveMinutes = function(logs, k) {
  const map = new Map();
  logs.forEach(([id, time]) => {
    map.set(id, map.get(id) || new Set());
    map.get(id).add(time);
  });

  const result = new Array(k).fill(0);
  [...map.values()].forEach(({ size }) => result[size - 1]++);

  return result;
};