
leetcode380. Insert Delete GetRandom O(1)
发布日期:2025-04-05 03:31:25
浏览次数:10
分类:精选文章
本文共 1414 字,大约阅读时间需要 4 分钟。
设计一个数据结构,使得能够在O(1)的时间复杂度中插入、删除数字,以及随机获取一个数字。所有数字都能被等概率的随机出来。
思路和代码
为了实现O(1)的插入、删除和随机查询,结合使用哈希表和双向链表的思路。哈希表用于快速查找和插入,双向链表用于维护元素的顺序,确保随机查询的概率公平。
插入操作
- 使用哈希表快速查找元素是否存在。
- 如果不存在,插入到双向链表的末尾,并记录在哈希表中。
删除操作
- 使用哈希表快速查找元素位置。
- 使用伪删除法,将被删除元素的位置替换为链表末尾元素的值,然后删除链表末尾的元素。
- 更新哈希表,删除被删除元素的记录。
随机查询操作
- 根据链表长度生成随机索引。
- 通过链表获取该索引位置的元素。
代码实现
import java.util.*;public class RandomizedSet { private final Listlist; private final Map hash; public RandomizedSet() { list = new ArrayList<>(); hash = new HashMap<>(); } public boolean insert(int val) { if (hash.containsKey(val)) { return false; } list.add(val); hash.put(val, list.size() - 1); return true; } public boolean remove(int val) { if (!hash.containsKey(val)) { return false; } int position = hash.get(val); if (position != list.size() - 1) { int last = list.get(list.size() - 1); list.set(position, last); hash.put(last, position); } list.remove(list.size() - 1); hash.remove(val); return true; } public int getRandom() { int position = (int) Math.floor(Math.random() * list.size()); return list.get(position); }}
解释
- 插入操作:检查元素是否存在,不存在则插入到链表末尾,记录在哈希表中。
- 删除操作:使用伪删除法,避免链表大范围调整,确保O(1)时间复杂度。
- 随机查询:根据链表长度生成随机索引,确保每个元素等概率被选中。
该数据结构通过结合哈希表和双向链表,实现了高效的插入、删除和随机查询操作。
发表评论
最新留言
很好
[***.229.124.182]2025年04月26日 20时52分02秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
2024最新科普什么是大模型?零基础入门到精通,收藏这篇就够了
2025-03-29
2024最新程序员接活儿搞钱平台盘点
2025-03-29
2024最火专业解读:信息安全(非常详细)零基础入门到精通,收藏这一篇就够了
2025-03-29
2025最新大模型技术学习过程梳理,零基础入门到精通,收藏这篇就够了
2025-03-30
2025版最新Bash Shell入门指南,零基础入门到精通,收藏这篇就够了
2025-03-30
2025版最新C++快速入门(适合小白)零基础入门到精通,收藏这篇就够了
2025-03-30
2025版最新关于HW护网行动的一些知识,零基础入门到精通,收藏这篇就够了
2025-03-30
2025版最新大模型学习路线,零基础入门到精通,收藏这篇就够了
2025-03-30
2025版最新大模型开发流程(非常详细)零基础入门到精通,收藏这一篇就够了
2025-03-30
2025版最新大模型微调方法(非常详细)零基础入门到精通,收藏这篇就够了
2025-03-30
2025版最新大语言模型的指令微调,零基础入门到精通,收藏这篇就够了
2025-03-30
2025版最新小白学习大模型:什么是大模型?零基础入门到精通,收藏这篇就够了
2025-03-30
2025版最新常用黑客工具之【Nmap 教程基础】零基础入门到精通,收藏这篇就够了
2025-03-30
2025版最新渗透测试和黑客工具列表,零基础入门到精通,收藏这一篇就够了
2025-03-30
2025版最新网络安全等级保护测评指南,零基础入门到精通,收藏这篇就够了
2025-03-30
2025版最新运维怎么转行网络安全?零基础入门到精通,收藏这篇就够了
2025-03-30
2025版最新黑客学习网站(非常详细),零基础入门到精通,看这一篇就够了
2025-03-30
23张图告诉你组建一个网络需要用到哪些硬件设备?路由器、交换机、防火墙是不是就够了?
2025-03-30
#12 btrfs文件系统
2025-03-30