LeetCode 380: Insert Delete GetRandom O(1)
2017-08-30 13:55
561 查看
class RandomizedSet { Map<Integer, Integer> indexMap; List<Integer> indexes; /** Initialize your data structure here. */ public RandomizedSet() { indexes = new ArrayList<>(); indexMap = new HashMap<>(); } /** Inserts a value to the set. Returns true if the set did not already contain the specified element. */ public boolean insert(int val) { if (indexMap.containsKey(val)) { return false; } indexMap.put(val, indexes.size()); indexes.add(val); return true; } /** Removes a value from the set. Returns true if the set contained the specified element. */ public boolean remove(int val) { if (!indexMap.containsKey(val)) { return false; } int index = indexMap.get(val); if (index < indexes.size() - 1) { indexMap.put(indexes.get(indexes.size() - 1), index); indexes.set(index, indexes.get(indexes.size() - 1)); } indexMap.remove(val); indexes.remove(indexes.size() - 1); return true; } /** Get a random element from the set. */ public int getRandom() { return indexes.get(new Random().nextInt(indexes.size())); } } /** * 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(); */
Follow up questions, what if dup allows:
1. Map<Value, Queue<Indexes>> if it looks like a queue first in first out.
2. Map<Value, Map<Index, Indexes>> User can remove the nth value.
相关文章推荐
- leetcode(380). Insert Delete GetRandom O(1)
- Leetcode 380 Insert Delete GetRandom O(1)
- LeetCode 380---Insert Delete GetRandom O(1)
- LeetCode[380] Insert Delete GetRandom O(1)
- 380. Insert Delete GetRandom O(1)
- Hard 380题 Insert Delete GetRandom O(1)
- 【LeetCode】Insert Delete GetRandom O(1) 系列
- Leetcode: Insert Delete GetRandom O(1)
- [LeetCode] Insert Delete GetRandom O(1) - Duplicates allowed
- LeetCode Insert Delete GetRandom O(1) - Duplicates allowed
- LeetCode-Insert Delete GetRandom O(1)
- 【Leetcode】Insert Delete GetRandom O(1) - Duplicates allowed
- HashTable-380-Insert Delete GetRandom O(1)
- 380. Insert Delete GetRandom O(1)
- Leetcode: Insert Delete GetRandom O(1) - Duplicates allowed
- LeetCode刷题【Array】 Insert Delete GetRandom O(1)
- Leetcode:Insert Delete GetRandom O(1)
- LeetCode-Insert Delete GetRandom O(1) - Duplicates allowed
- Leetcode 之 Insert Delete GetRandom O(1)
- [LeetCode] Insert Delete GetRandom O(1)