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

Java | Leetcode Java题解之第381题O(1)时间插入、删除和获取随机元素-允许重复

题目:

题解:

class RandomizedCollection {Map<Integer, Set<Integer>> idx;List<Integer> nums;/** Initialize your data structure here. */public RandomizedCollection() {idx = new HashMap<Integer, Set<Integer>>();nums = new ArrayList<Integer>();}/** Inserts a value to the collection. Returns true if the collection did not already contain the specified element. */public boolean insert(int val) {nums.add(val);Set<Integer> set = idx.getOrDefault(val, new HashSet<Integer>());set.add(nums.size() - 1);idx.put(val, set);return set.size() == 1;}/** Removes a value from the collection. Returns true if the collection contained the specified element. */public boolean remove(int val) {if (!idx.containsKey(val)) {return false;}Iterator<Integer> it = idx.get(val).iterator();  int i = it.next();int lastNum = nums.get(nums.size() - 1);nums.set(i, lastNum);idx.get(val).remove(i);idx.get(lastNum).remove(nums.size() - 1);if (i < nums.size() - 1) {idx.get(lastNum).add(i);}if (idx.get(val).size() == 0) {idx.remove(val);}nums.remove(nums.size() - 1);return true;}/** Get a random element from the collection. */public int getRandom() {return nums.get((int) (Math.random() * nums.size()));}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java-InputStream、MultipartFile和File相互转换工具类
  • Day50 | 108.冗余连接 109.冗余连接II
  • IO进程day04(进程)
  • Linux之shell脚本的if分支
  • AI搜索“懒人神器”,如何向谷歌和百度发起挑战?
  • 大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
  • P5721 【深基4.例6】数字直角三角形
  • 【uniapp/uview1.x】u-collapse 高度随内容自适应
  • 13.DataLoader 的使用
  • 三级_网络技术_52_应用题
  • 深度学习中Embedding的理解
  • pytorch的继承方法
  • 探索数字沙龙——文本描述生成数字人3D发型的专业工具
  • 数据结构与算法再探(二)高精度计算
  • ActiveMQ指南
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • 78. Subsets
  • Java编程基础24——递归练习
  • Java方法详解
  • STAR法则
  • underscore源码剖析之整体架构
  • 关于extract.autodesk.io的一些说明
  • 机器学习 vs. 深度学习
  • 基于axios的vue插件,让http请求更简单
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 入门到放弃node系列之Hello Word篇
  • 学习HTTP相关知识笔记
  • Java性能优化之JVM GC(垃圾回收机制)
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (26)4.7 字符函数和字符串函数
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (多级缓存)缓存同步
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (七)理解angular中的module和injector,即依赖注入
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .JPG图片,各种压缩率下的文件尺寸
  • .Net MVC + EF搭建学生管理系统
  • .NET 漏洞分析 | 某ERP系统存在SQL注入
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET连接数据库方式