LeetCode 380. 常数时间插入、删除和获取随机元素(哈希+vector)

1. 题目

设计一个支持在平均 时间复杂度 O(1) 下,执行以下操作的数据结构。

insert(val):当元素 val 不存在时,向集合中插入该项。
remove(val):元素 val 存在时,从集合中移除该项。
getRandom:随机返回现有集合中的一项。每个元素应该有相同的概率被返回。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/insert-delete-getrandom-o1
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 哈希表 key存储数据,value存储其在vector中的下标
  • 删除时,先把vector尾部的数存到要删除的位置
class RandomizedSet {vector<int> v;unordered_map<int,int> m;
public:RandomizedSet() { }bool insert(int val) {if(m.find(val) == m.end()){m[val] = v.size();v.push_back(val);return true;}elsereturn false;}bool remove(int val) {if(m.find(val) == m.end())return false;v[m[val]] = v.back();m[v.back()] = m[val];v.pop_back();m.erase(val);return true;}int getRandom() {if(v.size() == 0)return -1;return v[rand() % v.size()];}
};

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/478589.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文浅尝 - ICLR2020 | 知识图谱中数值规则的可微学习

论文笔记整理&#xff1a;许泽众&#xff0c;浙江大学博士研究生。研究方向&#xff1a;知识图谱&#xff0c;规则挖掘等。论文链接&#xff1a;https://openreview.net/pdf?idrJleKgrKwS本文解决的是规则的学习问题&#xff0c;学习出来的规则可用于知识推理任务&#xff0c;…

2021大厂面试高频100题最新汇总(附答案详解)

昨天在知乎上刷到一个热门问题:程序员需要达到什么水平才能顺利拿到 20k 无压力&#xff1f;其中一个最热门的回答是&#xff1a;“其实&#xff0c;无论你是前端还是后端、想进大厂还是拿高薪&#xff0c;算法都一定很重要。”为什么&#xff0c;算法会如此重要&#xff1f;不…

LeetCode 33. 搜索旋转排序数组(二分查找)

1. 题目 假设按照升序排序的数组在预先未知的某个点上进行了旋转。 ( 例如&#xff0c;数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。 搜索一个给定的目标值&#xff0c;如果数组中存在这个目标值&#xff0c;则返回它的索引&#xff0c;否则返回 -1 。 你可以假设数…

论文浅尝 - EMNLP2020 | 低资源跨语言实体链接中的设计挑战

论文笔记整理&#xff1a;谭亦鸣&#xff0c;东南大学博士。来源&#xff1a;EMNLP 2020链接&#xff1a;https://arxiv.org/pdf/2005.00692.pdf1.背景介绍跨语言实体链接&#xff08;XEL&#xff09;旨在将任一非英语文本中的实体提及匹配到英语知识库上&#xff08;例如Wikip…

MSON,让JSON序列化更快

问题 我们经常需要在主线程中读取一些配置文件或者缓存数据&#xff0c;最常用的结构化存储数据的方式就是将对象序列化为JSON字符串保存起来&#xff0c;这种方式特别简单而且可以和SharedPrefrence配合使用&#xff0c;因此应用广泛。但是目前用到的Gson在序列化JSON时很慢&a…

屠榜各大CV任务!「百度顶会论文复现营」携Swin Transformer来袭!

目标检测刷到58.7 AP&#xff01;实例分割刷到51.1 Mask AP&#xff01;&#xff01;语义分割在ADE20K上刷到53.5 mIoU&#xff01;&#xff01;&#xff01;......Swin Transformer持续屠榜各大CV任务&#xff0c;并且均名列前茅&#xff01;通过分层体系结构&#xff0c;带来…

百度任务型对话系统小记

意图扩展阅读&#xff1a; 古月哲亭: AAAI 2021 | 清华提出深度对齐聚类用于新意图发现&#xff1a;https://mp.weixin.qq.com/s/9dNs8TTERPdxmrVc3tF1zw 相关项目地址&#xff1a;https://github.com/thuiar/OKD-Reading-List 古月哲亭: 意图知识图谱的构建与应用&#xff1a…

论文浅尝 - EMNLP2020 | 跨媒体关键词预测: 多模态多头注意力和图像文本的统一框架...

论文笔记整理&#xff1a;柏超宇&#xff0c;东南大学硕士。文章链接&#xff1a;https://arxiv.org/pdf/2011.01565.pdf来源&#xff1a;EMNLP 2020动机社交媒体每天都会产生大量的内容。为了帮助用户快速捕捉所需内容&#xff0c;关键词预测受到越来越多的关注。尽管如此&…

从实际案例聊聊Java应用的GC优化

当Java程序性能达不到既定目标&#xff0c;且其他优化手段都已经穷尽时&#xff0c;通常需要调整垃圾回收器来进一步提高性能&#xff0c;称为GC优化。但GC算法复杂&#xff0c;影响GC性能的参数众多&#xff0c;且参数调整又依赖于应用各自的特点&#xff0c;这些因素很大程度…

LeetCode 162. 寻找峰值(二分查找)

1. 题目 峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 nums&#xff0c;其中 nums[i] ≠ nums[i1]&#xff0c;找到峰值元素并返回其索引。 数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回任何一个峰值所在位置即可。 你可以假设 nums[-1] n…

谷歌:CNN击败Transformer,有望成为预训练界新霸主!LeCun却沉默了...

文 | ????????????????这几年&#xff0c;大家都说深度学习进入了预训练时代。作为一个入行不久的小白&#xff0c;我一直以为各类基于 Transformers 结构的预训练模型是 NLP 的巨大里程碑&#xff0c;CNN、RNN 老矣&#xff0c;只配作为手下败将。大家的文章似…

新词发现简介

原文链接&#xff1a;https://blog.csdn.net/weixin_43378396/article/details/103848628 新词发现是 NLP 的基础任务之一&#xff0c;通过对已有语料进行挖掘&#xff0c;从中识别出新词。新词发现也可称为未登录词识别&#xff0c;严格来讲&#xff0c;新词是指随时代发展而新…

论文浅尝 - AAAI2020 | 利用自然语言推断生成人称一致的对话

链接&#xff1a; https://arxiv.org/pdf/1911.05889.pdf动机虽然最近几年通过利用社交网络上大量人人交互数据训练开放域对话模型取得了很大的成功&#xff0c;但是这些数据驱动的对话系统仍然无法很自然的与人类对话&#xff0c;其中的一个主要问题就是对话系统缺乏一致的角色…

智能投放系统之场景分析最佳实践

美团点评作为业内最大的O2O的平台&#xff0c;以短信/push作为运营手段触达用户的量级巨大&#xff0c;每日数以千万计。 美团点评线上存在超过千万的POI&#xff0c;覆盖超过2000城市、2.5万个后台商圈。在海量数据存在的前提下&#xff0c;实时投放的用户在场景的选择上存在一…

7个提升PyTorch性能的技巧

文 | William Falcon源 | AI公园在过去的10个月里&#xff0c;在PyTorch Lightning工作期间&#xff0c;团队和我已经接触过许多结构PyTorch代码的风格&#xff0c;我们已经发现了一些人们无意中引入瓶颈的关键地方。我们非常小心地确保PyTorch Lightning不会对我们为你自动编写…

论文浅尝 - EMNLP2020 | 基于规则引导的协作 agent 知识图谱推理学习

论文笔记整理&#xff1a;叶橄强&#xff0c;浙江大学在读硕士&#xff0c;研究方向为知识图谱的表示学习和预训练。来源&#xff1a;EMNLP 2020现有的大多数基于行走的模型通过在提供可解释的决策的同时获得良好的性能&#xff0c;在知识图谱推理中显示出其优势。但在遍历过程…

Shield——开源的移动端页面模块化开发框架

一直以来&#xff0c;如何能更高效地开发与维护页面是Android与iOS开发同学最主要的工作和最关心的问题。随着业务的不断发展&#xff0c;根据特定业务场景产生的定制化需求变得越来越多。单一页面往往需要根据不同业务、不同场景甚至不同用户展示不同的内容。在这样的背景下&a…

1年排名前进13位 ,这个论题成顶会新宠!

写过论文的同学都知道&#xff0c;写久了真的会头秃&#xff0c;其中耗发量最高的当属论题和创新点。今天分享一套方法&#xff0c;这个方法已经帮助近3000位同学成功发&#xff08;拯&#xff09;表&#xff08;救&#xff09;论&#xff08;头&#xff09;文&#xff08;发&a…