JAVA练习365- O(1) 时间插入、删除和获取随机元素

发布时间:2026/11/7 22:34:53

JAVA练习365- O(1) 时间插入、删除和获取随机元素 题目概览实现RandomizedSet类RandomizedSet()初始化RandomizedSet对象bool insert(int val)当元素val不存在时向集合中插入该项并返回true否则返回false。bool remove(int val)当元素val存在时从集合中移除该项并返回true否则返回false。int getRandom()随机返回现有集合中的一项测试用例保证调用此方法时集合中至少存在一个元素。每个元素应该有相同的概率被返回。你必须实现类的所有函数并满足每个函数的平均时间复杂度为O(1)。示例输入[RandomizedSet, insert, remove, insert, getRandom, remove, insert, getRandom] [[], [1], [2], [2], [], [1], [2], []]输出[null, true, false, true, 2, true, false, 2]解释RandomizedSet randomizedSet new RandomizedSet(); randomizedSet.insert(1); // 向集合中插入 1 。返回 true 表示 1 被成功地插入。 randomizedSet.remove(2); // 返回 false 表示集合中不存在 2 。 randomizedSet.insert(2); // 向集合中插入 2 。返回 true 。集合现在包含 [1,2] 。 randomizedSet.getRandom(); // getRandom 应随机返回 1 或 2 。 randomizedSet.remove(1); // 从集合中移除 1 返回 true 。集合现在包含 [2] 。 randomizedSet.insert(2); // 2 已在集合中所以返回 false 。 randomizedSet.getRandom(); // 由于 2 是集合中唯一的数字getRandom 总是返回 2 。提示-2^31 val 2^31 - 1最多调用insert、remove和getRandom函数2 *10^5次在调用getRandom方法时数据结构中至少存在一个元素。来源380. O(1) 时间插入、删除和获取随机元素 - 力扣LeetCode解题分析方法哈希插入和删除可以用通过集合来实现由于集合是乱序的因此我们需要一个有序集合来存储每个元素由于这里给出了最多调用 20000 次我们可以用长度为 20000 的数组代替那么维护一个变量 index记录当前数组索引集合用 map 实现key 为 valvalue 为 index插入时插入 mapnums[ index ] valindex删除时删除 map 对应 val 的键值对并记录对应索引 cur将数组对应索引值设置为数组最后一个即 nums[cur] nums[index]然后 index--。随机获取时生成 [ 0i的随机值即可时间复杂度O(1)空间复杂度O(n)class RandomizedSet { static int[] nums new int[200001]; Random random new Random(); MapInteger, Integer map new HashMap(); int i -1; public RandomizedSet() { } public boolean insert(int val) { if (map.containsKey(val)) { return false; } nums[i] val; map.put(val, i); return true; } public boolean remove(int val) { if (!map.containsKey(val)) { return false; } int index map.remove(val); if (index i) { i--; return true; } nums[index] nums[i--]; map.put(nums[index], index); return true; } public int getRandom() { int ran random.nextInt(i1); return nums[ran]; } } /** * Your RandomizedSet object will be instantiated and called as such: * RandomizedSet obj new RandomizedSet(); * boolean param_1 obj.insert(val); * boolean param_2 obj.remove(val); * int param_3 obj.getRandom(); */
延伸阅读

更多相关文章

2026/11/7 22:34:53

图数据结构与算法实战:从基础到工程优化

1. 图数据结构基础概念解析 图(Graph)作为数据结构中的"瑞士军刀",是描述实体间复杂关系的终极武器。不同于线性结构的串行排列和树形结构的层级约束,图以节点(Vertex)和边(Edge&…

2026/10/29 19:35:39

实验报告撰写规范与核心内容梳理指南

搞科研的大家!找英文文献依然是科研路上最头疼的一道坎儿吧? 尤其是现在AI工具层出不穷,老工具也在不断升级,选对平台能省下大把时间。今天我给大家盘点8个好用的英文文献检索网站,涵盖传统权威平台 新一代AI智能工具…

2026/11/2 5:59:47

蔬菜配送系统怎么选?同行都在推的靠谱报价,认准菜东家

做蔬菜配送这行,内行都懂:赚的是辛苦钱,亏的是管理漏洞。每天凌晨分拣、多客户调价、账期混乱、损耗算不清、错单漏单频发……很多老板不是生意不赚钱,而是人工管不住、账目对不上、效率提不上。现在同行圈子里有个共识&#xff1…

2026/11/7 22:30:20

唐山考低压电工证别再瞎折腾了!良心建议帮你少走弯路

唐山考低压电工证别再瞎折腾了!良心建议帮你少走弯路 工地太忙根本没时间复习考试,这话听着耳熟吧?作为干了七八年电工的老师傅,我见过太多人抱着“能混过去就混过去”的心态去考低压电工证,结果要么因为材料不齐被拒,要么考试挂了,浪费钱又耽误事。今…

2026/11/7 22:30:20

电工证考评场地审核全攻略:郑州报考避坑指南

电工证考评场地审核全攻略:郑州报考避坑指南 实操考试心里没底怕挂科?你不是一个人。在安阳工地干了五年的建筑工人老李,去年报考低压电工证,结果在实操考试环节因为场地审核不通过,直接被退考。这事儿不是个例,而是很多人在报考电工证时容易踩的坑。…

2026/11/7 22:30:20

船厂电工证在哪里考 电子证书过期怎么处理最稳妥

船厂电工证在哪里考 电子证书过期怎么处理最稳妥 证书过期了不知道怎么复审延期?别急,今天就给你讲清楚,尤其是船厂电工证在哪里考、电子证书怎么申请、复审流程怎么走,这些事咱们得一个一个说明白,别再走弯路了。…

2026/11/7 22:30:19

高压电工证需要解除吗多久拿证?别让培训费打水漂

高压电工证需要解除吗多久拿证?别让培训费打水漂 怕考不过白交培训费?高压电工证需要解除吗?多久拿证?作为信阳浉河区的应届工程类毕业生,你是不是正在为这些问题纠结?别担心,这篇文章从报考流程到考试内容、再到证书有效期,全盘给你讲清楚,不绕弯子…

2026/11/7 22:25:19

办电工证材料证丢了怎么补办

电工证材料全攻略:学历不高也能拿证,保姆级教程教你避开报名雷区 你是不是也这样想:“我学历不高,怕报不了电工证?”别急,今天咱们就来聊聊【办电工证材料】这个事,给你一套保姆级教程,讲清楚怎么准备材料、怎么报名,还有那些你可能不知道的“避坑指…

2026/11/7 14:54:47

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/7 14:50:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/7 0:03:08

郑州报考避坑指南:电工证和钳工证怎么选?实操考试心里没底怕挂科

郑州报考避坑指南:电工证和钳工证怎么选?实操考试心里没底怕挂科 实操考试心里没底怕挂科?你不是一个人。特别是在郑州这样的城市,很多施工企业负责人和一线作业人员在报考电工证和钳工证时都面临着同样的困惑。到底该考哪个证?哪个更适合自己?哪个证书…

2026/11/7 0:03:08

广西电工证办理流程全解析:外省证怎么转?在哪考最靠谱?

广西电工证办理流程全解析:外省证怎么转?在哪考最靠谱? 之前考的证在外省能不能转过来?这个问题我遇到太多了,今天就拿广西电工证办理流程来具体说说,别再走弯路了。广西电工证的报考、复审、继续教育这些环节,如果你不了解,真的会吃大亏,尤其对于从…

2026/11/7 0:03:08

电气电工证都有哪些保姆级教程

电气电工证都有哪些保姆级教程 你是不是正愁不知道去哪报名,怕被中介坑?别急,这篇保姆级教程专为河南初次报考人员准备,帮你搞清楚 电气电工证都有哪些 ,以及如何避开那些坑。 电气电工证都有哪些?别被五花八门的证书搞懵了…

2026/11/7 14:54:47

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/7 14:50:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑