Insert Delete GetRandom O(1)
2018-07-15 18:36:29
问题描述:
问题求解:
private ArrayList<Integer> ls;private HashMap<Integer, Integer> map;private Random rand;/** Initialize your data structure here. */public RandomizedSet() {ls = new ArrayList<>();map = new HashMap<>();rand = new Random();}/** Inserts a value to the set. Returns true if the set did not already contain the specified element. */public boolean insert(int val) {if (map.containsKey(val)) return false;ls.add(val);map.put(val, ls.size() - 1);return true;}/** Removes a value from the set. Returns true if the set contained the specified element. */public boolean remove(int val) {if (!map.containsKey(val)) return false;int idx = map.get(val);if (idx != ls.size() - 1) {int temp = ls.get(ls.size() - 1);ls.set(idx, temp);map.put(temp, idx);}map.remove(val);ls.remove(ls.size() - 1);return true;}/** Get a random element from the set. */public int getRandom() {return ls.get(rand.nextInt(ls.size()));}
转载于:https://www.cnblogs.com/TIMHY/p/9314470.html
Insert Delete GetRandom O(1)相关推荐
- leetcode381. Insert Delete GetRandom O(1) - Duplicates allowed
题目要求 Design a data structure that supports all following operations in average O(1) time.Note: Dupli ...
- LeetCode Insert Delete GetRandom O(1) - Duplicates allowed
题意:设计一个数据结构,支持添加,删除和随机获取元素,允许元素重复,要求时间复杂度为O(1) 思路:因为要求允许元素重复,可能用key=>set的映射方式,其中set表示相同元素对应的下标.用l ...
- LeetCode Insert Delete GetRandom O(1)
题意:设计一个数据结构,支持添加.删除,随机获取操作,时间复杂度为O(1) 思路:因为元素不重复,在添加操作时,可以使用hashset和arraylist来做,其中hashset中的key表示添加的元 ...
- leetcode 380. Insert Delete GetRandom O(1) | 380. O(1) 时间插入、删除和获取随机元素(Java)
题目 https://leetcode.com/problems/insert-delete-getrandom-o1/ 题解 一个设计题,没想出来,参考了: Java solution using ...
- 触发器实现两表之间的INSERT,DELETE,UPDATE
需求说明:培训记录处录入"外出培训"记录,保存后同步外出培训合同至"合同模块" 培训记录表PX_Record创建触发器 步骤一.新建触发器:[insert_ht ...
- MySQL5.7 支持一个表有多个INSERT/DELETE/UPDATE触发器
在MySQL5.6版本里,不支持一个表有多个INSERT/DELETE/UPDATE触发器. 例如创建t1表两个INSERT的触发器: DELIMITER $$ USE `test`$$ DROP T ...
- SQL server触发器中 update insert delete 分别给写个例子被。
SQL server触发器中 update insert delete 分别给写个例子以及解释下例子的作用和意思被, 万分感谢!!!! 主要想知道下各个语句的书写规范. INSERT: 表1 (ID, ...
- Innodb锁系统 Insert/Delete 锁处理及死锁示例分析
A.INSERT 插入操作在函数btr_cur_optimistic_insert->btr_cur_ins_lock_and_undo->lock_rec_insert_check_an ...
- mysql 5.7 insert_MySQL5.7 支持一个表有多个INSERT/DELETE/UPDATE触发器
在MySQL5.6版本里,不支持一个表有多个INSERT/DELETE/UPDATE触发器. 例如创建t1表两个INSERT的触发器:DELIMITER $$ USE `test`$$ DROP TR ...
- oracle中update,insert,delete的高级用法
一.对视图的更新. update,insert,delete除了可以作用于单表,还可以作用于视图.子查询,但是有种种限制. 视图(子查询)的限制: 1.没有集合操作符(并.差.交): 2.没有DI ...
最新文章
- 原本要与Hinton当同事,最后被迫Bengio门下读博?| 独立研究员的坎坷之路
- 指定用户 启动 进入 docker容器
- 计算机病毒的防治 教案,计算机病毒及防治教案
- Jenkisn之JDK-MVN-ANT-GRADLE
- 进阶篇-安卓系统:5.安卓手机位置传感器
- jrockit_1.6下载_Oracle JRockit Mission Control 4.1发布
- Linux的目录结构与磁盘分区
- 论文写作思路_2018年的16个写作思路
- 【Elasticsearch】明明存在,怎么搜索不出来呢?
- 面试常考题目之atoi的实现
- webapp构建工具库
- IDEA中解决Edit Configurations中没有tomcat Server选项的问题(附配置Tomcat)
- Oracle、MySql、SQLServer 数据库分页查询语句
- 位运算 -- 思考
- 杭电ACM2000题
- 【开源编码分享】Python古三式∶太乙神数丶奇门遁甲丶大六壬
- 关于软件测试的基础认知分享
- 工程项目提成标准方案_工程绩效提成奖金方案
- ArcGIS Pro简介
- R实战| 雷达图(Radar Chart)
热门文章
- 职场“35岁危机”:这是我看过的最棒建议
- 英特尔、高通等禁止员工与华为私下交流
- 推荐两个非常不错的公众号
- java给mongo数组添加_如何使用具有新值的java在mongodb中的现有集合中追加现有数组...
- Linux中级之lvs三个模式的图像补充(nat,dr,tun)
- 除了自定义cell以为,还可以通过属性来控制cell线条的长度
- 弱逼发福利——BZOJ简易题解
- 在MVC中要实现Ajax
- 获取目录-Winform
- 【原创】编程题练习:头插法尾插法建立单链表及找寻单链表中的倒数第K个节点...