publicclassRandomizedCollection {
HashMap<Integer,Integer> hashMap;/*前面的是插入的数字,后面是这个数字的数量*/
LinkedList<Integer> list ;
/** Initialize your data structure here. */publicRandomizedCollection() {
hashMap = new HashMap<Integer,Integer>();
list = new LinkedList<Integer>();
}
/** Inserts a value to the collection. Returns true if the collection did not already contain the specified element. */publicbooleaninsert(int val) {
if (hashMap.containsKey(val)&&hashMap.get(val)>0){
//之前可能插入了又删除了,所以这个数的数量必须大于零 hashMap.put(val,hashMap.get(val)+1);
list.add(val);
returnfalse;
}else {
hashMap.put(val,1);
list.add(val);
returntrue;
}
}
/** Removes a value from the collection. Returns true if the collection contained the specified element. */publicbooleanremove(int val) {
if (!hashMap.containsKey(val)||hashMap.get(val)==0){
returnfalse;
}else{
hashMap.put(val,hashMap.get(val)-1);
list.removeFirstOccurrence(val);
returntrue;
}
}
/** Get a random element from the collection. */publicintgetRandom() {
Random rand = new Random();
return list.get( rand.nextInt(list.size()) );
}
}
/**
* Your RandomizedCollection object will be instantiated and called as such:
* RandomizedCollection obj = new RandomizedCollection();
* boolean param_1 = obj.insert(val);
* boolean param_2 = obj.remove(val);
* int param_3 = obj.getRandom();
*/
public class RandomizedCollection { HashMap<Integer,Integer> hashMap;/*前面的是插入的数字,后面是这个数字的数量*/ LinkedList<Integer> list ; /** Initialize your data structure here. */ public RandomizedCo