LeetCode 380 O(1) 时间插入、删除和获取随机元素
描述
题目要求实现 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。
randomizedSet.remove(2); // 返回 false,表示集合中不存在 2。
randomizedSet.insert(2); // 向集合中插入 2。返回 true。集合现在包含 [1,2]。
randomizedSet.getRandom(); // getRandom 应随机返回 1 或 2。
randomizedSet.remove(1); // 从集合中移除 1,返回 true。集合现在包含 [2]。
randomizedSet();
randomizedSet();


