LeetCode 381---Insert Delete GetRandom O(1) - Duplicates allowed
来源:互联网 发布:js给div添加class属性 编辑:程序博客网 时间:2024/05/18 17:40
题目链接:LeetCode 381—Insert Delete GetRandom O(1) - Duplicates allowed
AC代码:
import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.List;import java.util.Map;import java.util.Set;public class Problem381 { List<Integer> nums; Map<Integer, Set<Integer>> map; java.util.Random random; /** Initialize your data structure here. */ public Problem381() { // TODO Auto-generated constructor stub } { nums = new ArrayList<>(); map = new HashMap<>(); random = new java.util.Random(); } /** Inserts a value to the collection. Returns true if the collection did not already contain the specified element. */ public boolean insert(int val) { boolean doesContain = map.containsKey(val); if(!doesContain) map.put(val, new HashSet<>()); map.get(val).add(nums.size()); nums.add(val); return !doesContain; } /** Removes a value from the collection. Returns true if the collection contained the specified element. */ public boolean remove(int val) { if(!map.containsKey(val)) return false; if(!map.get(val).contains(nums.size()-1)) { int currPos = map.get(val).iterator().next(); int lastVal = nums.get(nums.size() - 1); map.get(lastVal).remove(nums.size() - 1); map.get(lastVal).add(currPos); map.get(val).remove(currPos); map.get(val).add(nums.size() - 1); nums.set(currPos, lastVal); } map.get(val).remove(nums.size()-1); if(map.get(val).isEmpty()) map.remove(val); nums.remove(nums.size()-1); return true; } /** Get a random element from the collection. */ public int getRandom() { return nums.get(random.nextInt(nums.size())); }}
0 0
- LeetCode 381---Insert Delete GetRandom O(1) - Duplicates allowed
- LeetCode—381. Insert Delete GetRandom O(1) - Duplicates allowed
- 【Leetcode】Insert Delete GetRandom O(1) - Duplicates allowed
- leetcode之Insert Delete GetRandom O(1) - Duplicates allowed
- [leetcode] 381. Insert Delete GetRandom O(1) - Duplicates allowed
- <leetcode>381. Insert Delete GetRandom O(1) - Duplicates allowed
- LeetCode Insert Delete GetRandom O(1) - Duplicates allowed
- LeetCode 381. Insert Delete GetRandom O(1) - Duplicates allowed
- Insert Delete GetRandom O(1) - Duplicates allowed
- Insert Delete GetRandom O(1) - Duplicates allowed
- Insert Delete GetRandom O(1) - Duplicates allowed
- Leetcode Insert Delete GetRandom O(1) Duplicates allowed and Not allowed
- 151.Insert Delete GetRandom O(1) - Duplicates allowed
- 381. Insert Delete GetRandom O(1) - Duplicates allowed
- 381. Insert Delete GetRandom O(1) - Duplicates allowed
- 381. Insert Delete GetRandom O(1) - Duplicates allowed
- Insert Delete GetRandom O(1) - Duplicates allowed in JAVA
- 381. Insert Delete GetRandom O(1) - Duplicates allowed
- Servlet笔记一之J2EE基本学习路线
- 1009. Product of Polynomials (25)
- 欢迎使用CSDN-markdown编辑器
- BZOJ 2631: tree Link_Cut_Tree
- 蓝桥杯 大臣的旅费 (求树的直径)
- LeetCode 381---Insert Delete GetRandom O(1) - Duplicates allowed
- 数据结构源码--迷宫
- 码神第一天
- 今天继续水题
- 局域网的概念
- USACO2014FebruaryGold Cow Decathlon
- http://blog.csdn.net/strawbingo/article/details/45366061
- 在 Ubunt 16.04上搭建 Rails5开发环境
- 研考总结