LeetCode 1817. 查找用户活跃分钟数 Map、Set题解,本题读懂题最重要。
题目
1817. 查找用户活跃分钟数
https://leetcode.cn/problems/finding-the-users-active-minutes/
给你用户在 LeetCode 的操作日志,和一个整数 k 。日志用一个二维整数数组 logs 表示,其中每个 logs[i] = [IDi, timei] 表示 ID 为 IDi 的用户在 timei 分钟时执行了某个操作。
多个用户 可以同时执行操作,单个用户可以在同一分钟内执行 多个操作 。
指定用户的 用户活跃分钟数(user active minutes,UAM) 定义为用户对 LeetCode 执行操作的 唯一分钟数 。 即使一分钟内执行多个操作,也只能按一分钟计数。
请你统计用户活跃分钟数的分布情况,统计结果是一个长度为 k 且 下标从 1 开始计数 的数组 answer ,对于每个 j(1 <= j <= k),answer[j] 表示 用户活跃分钟数 等于 j 的用户数。
返回上面描述的答案数组 answer 。
思路
这个题不知道为啥读起来难懂!
题目核心求的是 用户活跃时长 -> 对应用户数。
其中针对某分钟内同一用户的操作,计数需去重。
我们可以使用
|
|
来统计每个用户活跃的分钟数据,使用Set
即可保证分钟数据去重。
之后再遍历一次,即可得出分钟数对应的用户数。
使用Map、Set
代码
|
|
复杂度
m:logs行数 n:logs列数
时间
对数据遍历了行数,两次,复杂度O(m)
。
空间
额外使用了userId2Minutes
统计过程数据,叠加占用O(n*m)
。