Watch 10 video solutions for Finding the Users Active Minutes, a medium level problem involving Array, Hash Table. This walkthrough by Cherry Coding [IIT-G] has 2,312 views views. Want to try solving it yourself? Practice on FleetCode or read the detailed text solution.
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.
Example 1:
Input: logs = [[0,5],[1,2],[0,2],[0,5],[1,3]], k = 5 Output: [0,2,0,0,0] Explanation: The user with ID=0 performed actions at minutes 5, 2, and 5 again. Hence, they have a UAM of 2 (minute 5 is only counted once). The user with ID=1 performed actions at minutes 2 and 3. Hence, they have a UAM of 2. Since both users have a UAM of 2, answer[2] is 2, and the remaining answer[j] values are 0.
Example 2:
Input: logs = [[1,1],[2,2],[2,3]], k = 4 Output: [1,1,0,0] Explanation: The user with ID=1 performed a single action at minute 1. Hence, they have a UAM of 1. The user with ID=2 performed actions at minutes 2 and 3. Hence, they have a UAM of 2. There is one user with a UAM of 1 and one with a UAM of 2. Hence, answer[1] = 1, answer[2] = 1, and the remaining values are 0.
Constraints:
1 <= logs.length <= 1040 <= IDi <= 1091 <= timei <= 105k is in the range [The maximum UAM for a user, 105].Problem Overview: You receive a list of logs where each entry contains a userId and a minute. A user's active minutes are the number of unique minutes they appear in the logs. The task is to compute how many users have exactly 1..k unique active minutes and return the frequency array.
Approach 1: HashMap to Track Unique Minutes (Time: O(n), Space: O(n))
Use a hash map where the key is userId and the value is a set of minutes the user was active. Iterate through the logs and insert each minute into the corresponding user's set. Because sets automatically remove duplicates, repeated log entries for the same minute are ignored. After processing all logs, iterate through the map and compute each user's unique minute count. Maintain a result array of size k where index i tracks how many users have i + 1 active minutes. This approach relies heavily on fast hash lookups and is a classic pattern when solving counting problems with hash tables and arrays.
Approach 2: Two-Pass Calculation (Time: O(n), Space: O(n))
The same core idea can be structured as two clear passes over the data. In the first pass, build a mapping from userId to a set of unique minutes using a hash map. In the second pass, iterate over each user's set, compute the set size, and increment the corresponding index in the result array if the size is ≤ k. Separating the logic into two phases makes the code easier to reason about and debug during interviews. The algorithm still performs constant-time hash insertions and set operations, making it efficient for large log inputs. This technique frequently appears in problems involving hash table aggregation or deduplication tasks.
Recommended for interviews: The hash map + set approach is the expected solution. Interviewers want to see that you recognize duplicate minutes must be filtered using a set and that you can convert those counts into a frequency distribution of size k. Explaining the logic clearly and handling edge cases such as duplicate logs demonstrates solid command of hash-based counting patterns.
| Approach | Time | Space | When to Use |
|---|---|---|---|
| HashMap to Track Unique Minutes | O(n) | O(n) | General case. Efficient when logs may contain duplicate minutes per user. |
| Two-Pass Calculation | O(n) | O(n) | Cleaner separation of aggregation and counting logic, easier to reason about in interviews. |