当前位置: 首页 > wzjs >正文

北京建网站公司哪家便宜百度seo优化培训

北京建网站公司哪家便宜,百度seo优化培训,网站seo优化分析,中国疫情最新消息风险区深入剖析 LeetCode 用户活跃分钟数统计问题 一、题目详情 给定用户在 LeetCode 的操作日志,日志以二维整数数组logs表示,其中每个logs[i][IDi, timei],意味着 ID 为IDi的用户在timei分钟时执行了某个操作。多个用户能够同时执行操作&#x…

深入剖析 LeetCode 用户活跃分钟数统计问题

一、题目详情

给定用户在 LeetCode 的操作日志,日志以二维整数数组logs表示,其中每个logs[i]=[IDi, timei],意味着 ID 为IDi的用户在timei分钟时执行了某个操作。多个用户能够同时执行操作,并且单个用户在同一分钟内可以执行多个操作。

用户活跃分钟数(user active minutes,UAM),指用户对 LeetCode 执行操作的唯一分钟数,即便一分钟内执行多个操作,也仅按一分钟计数。

题目要求统计用户活跃分钟数的分布情况,需返回一个长度为k且下标从 1 开始计数的数组answer。对于每个j(1 <= j <= k),answer[j]表示用户活跃分钟数等于j的用户数 。

示例情况

假如logs = [[0,5],[1,2],[0,2],[0,5],[1,3]]k = 5。用户0在第2和第5分钟执行了操作,活跃分钟数为2;用户1在第2和第3分钟执行了操作,活跃分钟数为2。因此,答案数组中answer[2]应该为2,其他位置为0 。

二、解题思路探索

核心思路

  1. 记录用户活跃分钟:借助哈希表记录每个用户的活跃分钟。遍历操作日志,将每个用户的操作时间放入对应的哈希表集合中,利用集合自动去重的特性,获取每个用户的唯一活跃分钟。
  2. 统计活跃分钟分布:遍历哈希表中每个用户的活跃分钟集合,统计集合大小,该大小即为用户的活跃分钟数。依据活跃分钟数,将用户数计入结果数组answer的对应位置。

思路解析

  • 为何使用哈希表:哈希表能够快速地将用户 ID 与他们的活跃分钟集合进行关联,方便我们对每个用户的操作时间进行管理。由于哈希表查找、插入操作的平均时间复杂度为 O (1),大大提高了算法效率。
  • 特殊情况考量:因为题目规定了结果数组answer的长度为k,在统计活跃分钟数对应的用户数时,需要确保活跃分钟数不超过k,避免数组越界。

三、代码实现展示

Java 代码

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;class Solution {public int[] findingUsersActiveMinutes(int[][] logs, int k) {// 存储每个用户的活跃分钟集合Map<Integer, Set<Integer>> userActiveMinutes = new HashMap<>();// 遍历日志,将每个用户的活跃分钟添加到对应的集合中for (int[] log : logs) {int userId = log[0];int time = log[1];userActiveMinutes.computeIfAbsent(userId, key -> new HashSet<>()).add(time);}// 用于存储用户活跃分钟数的分布情况int[] answer = new int[k];// 遍历每个用户的活跃分钟集合,统计每个活跃分钟数对应的用户数for (Set<Integer> activeMinutes : userActiveMinutes.values()) {int activeCount = activeMinutes.size();if (activeCount <= k) {answer[activeCount - 1]++;}}return answer;}
}

代码说明

  1. 记录活跃分钟:创建一个Map<Integer, Set<Integer>>类型的userActiveMinutes哈希表,其中键为用户 ID,值为该用户的活跃分钟集合。遍历操作日志logs,使用computeIfAbsent方法确保每个用户都有对应的活跃分钟集合,并将操作时间添加到集合中。
  2. 初始化结果数组:创建长度为kanswer数组,用于存储用户活跃分钟数的分布情况。
  3. 统计分布情况:遍历userActiveMinutes中的每个活跃分钟集合,获取集合大小,即用户的活跃分钟数。若活跃分钟数不超过k,则将answer数组对应位置的计数加 1。

四、测试用例验证

测试代码

public class Main {public static void main(String[] args) {Solution solution = new Solution();int[][] logs = {{0,5},{1,2},{0,2},{0,5},{1,3}};int k = 5;int[] result = solution.findingUsersActiveMinutes(logs, k);for (int i : result) {System.out.print(i + " ");}}
}

测试结果分析

上述测试用例中,用户0的活跃分钟数为2,用户1的活跃分钟数也为2。运行程序后,输出结果answer[2 - 1]处为2,符合预期。

五、总结与拓展

总结

这道题通过巧妙运用哈希表和集合,解决了用户活跃分钟数的统计和分布问题。算法的时间复杂度为 O (n),其中 n 为操作日志的长度,因为主要操作是对操作日志进行一次遍历。空间复杂度为 O (n + k),哈希表存储用户活跃分钟信息的空间复杂度为 O (n),结果数组占用空间为 O (k)。

拓展思考

  • 数据规模变化:当操作日志数据量非常大时,内存占用可能成为问题。可以考虑分块处理数据,减少单次处理的数据量。
  • 多语言实现差异:在不同编程语言中,哈希表和集合的实现细节和性能有所不同。例如,Python 中的defaultdictset,在解决这类问题时,代码风格和性能表现会与 Java 有所差异。
  • 类似问题:像统计用户登录天数分布、网站用户访问页面的频次分布等问题,都可以采用类似的思路解决。
http://www.dtcms.com/wzjs/177745.html

相关文章:

  • 网站开发流程任务百度推广电话销售话术
  • 适合个人做的网站有哪些东西吗百度推广电话客服24小时
  • 哪些网站可以注册邮箱网站规划与设计
  • 邢台本地头条新闻百度百科优化排名
  • 为什么网站上传照片传不上去太原seo外包服务
  • 佛山市官网网站建设哪家好外链平台有哪些
  • 德州做网站chatgpt中文在线
  • 做爰全过程网站广州今天刚刚发生的重大新闻
  • 广东品牌设计公司有哪些seo深圳网络推广
  • 360免费建站视频谷歌广告联盟怎么做
  • 网站开发 图片重庆森林为什么叫这个名字
  • 山东省示范校建设网站如何获取热搜关键词
  • 哪个网站可以免费做国外网站大连企业黄页电话
  • 建设通网站怎么样推广资源网
  • 站酷网logo素材图库核心关键词和长尾关键词举例
  • 做视频网站视频用什么插件网店推广运营
  • 大连城乡住房建设厅网站广西seo关键词怎么优化
  • 做网站需要会哪些编程语言希爱力跟万艾可哪个猛
  • wordpress模板获取不到分类优化大师兑换码
  • 自适应网站内容做多大尺寸外贸推广平台哪家好
  • 设计灵感重庆自动seo
  • 个人网站建设模板太原高级seo主管
  • 网站如何做映射网页制作平台有哪些
  • 国外域名查询游戏优化
  • 怎么建设小型网站爱站工具包的模块
  • wordpress如何自建站微博推广平台
  • 做网页的网站叫什么软件如何进行网络营销推广
  • 安卓手机app开发用什么软件厦门seo优化公司
  • 郑州个人做网站汉狮南京关键词优化服务
  • 做枪版视频网站犯法吗百度一下你就知道首页