博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
插入、删除和随机查询时间复杂度都为O(1) leetcode 381
阅读量:5103 次
发布时间:2019-06-13

本文共 2098 字,大约阅读时间需要 6 分钟。

插入、删除和随机查询时间复杂度都为O(1)

解题思路:map+list

import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Random;class RandomizedCollection {    public static void main(String[] args) {        RandomizedCollection s = new RandomizedCollection();        s.insert(1);        s.remove(1);        s.insert(1);        System.out.println(s.list);            }    public Map
> map = new HashMap<>(); public List
list = new ArrayList<>(); /** Initialize your data structure here. */ public RandomizedCollection() { } /** Inserts a value to the collection. Returns true if the collection did not already contain the specified element. */ public boolean insert(int val) { list.add(val); List
temp = map.get(val); if(temp==null){ temp = new ArrayList<>(); temp.add(list.size()-1); map.put(val,temp); return true; }else{ temp.add(list.size()-1); return false; } } /** Removes a value from the collection. Returns true if the collection contained the specified element. */ public boolean remove(int val) { List
temp = map.get(val); if(temp==null){ return false; } int item = temp.remove(0); if(temp.size()==0) { map.remove(val); } if(list.size()-1==item) { list.remove(item); }else { Integer lastItem = list.remove(list.size()-1);//最后一个元素的内容 list.set(item, lastItem); //对结尾元素的调整 temp = map.get(lastItem); temp.remove((Integer)list.size());//这个过程还是比较耗时的 temp.add(item); } return true; } /** Get a random element from the collection. */ public int getRandom() { Random random = new Random(); int o = random.nextInt(list.size()); return list.get(o); }}

 

转载于:https://www.cnblogs.com/erdanyang/p/11506547.html

你可能感兴趣的文章
IOS第11天(4:UIDatePicker时间选择,和键盘处理,加载xib文件,代理模式)
查看>>
Delphi XE开发 Android 开机自动启动
查看>>
Delphi中Format与FormatDateTime函数详解
查看>>
c#数据库连接池
查看>>
hdu-5992 Finding Hotels(kd-tree)
查看>>
Alfresco 4 项目介绍
查看>>
[Database] 不知道表名和字段查找值=1234的数据.
查看>>
MySQL的高可用实现:MySQL系列之十四
查看>>
python之os模块
查看>>
重写FileUpload控件让它可以显示上传后的文件名
查看>>
SSO单点登录解决方案[转载]
查看>>
使用闭包跨域开发
查看>>
SourceTree下载与安装 ---记录一下,如果忘记了再拿来看看
查看>>
关于WP7上音乐播放的嫉妒恶心的一些规则和解决方案。
查看>>
JWT(JSON Web Token) 多网站的单点登录,放弃session 转载https://www.cnblogs.com/lexiaofei/p/7409846.html...
查看>>
JAVAWEB 一一 Spirng(AOP面向切面)
查看>>
审计 6 SSRF和任意文件读取
查看>>
eslint 报error
查看>>
java实现微信支付
查看>>
Android自动化测试在多种屏幕下的注意事项
查看>>