381. Insert Delete GetRandom O(1) - Duplicates allowed

来源:互联网 发布:vscode 插件推荐 编辑:程序博客网 时间:2024/05/18 19:21
public class RandomizedCollection {    HashMap<Integer,Integer> hashMap;/*前面的是插入的数字,后面是这个数字的数量*/    LinkedList<Integer> list ;     /** Initialize your data structure here. */    public RandomizedCollection() {        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. */    public boolean insert(int val) {        if (hashMap.containsKey(val)&&hashMap.get(val)>0){  //之前可能插入了又删除了,所以这个数的数量必须大于零          hashMap.put(val,hashMap.get(val)+1);            list.add(val);            return false;        }else {            hashMap.put(val,1);            list.add(val);            return true;        }    }    /** Removes a value from the collection. Returns true if the collection contained the specified element. */    public boolean remove(int val) {        if (!hashMap.containsKey(val)||hashMap.get(val)==0){            return false;        }else{            hashMap.put(val,hashMap.get(val)-1);            list.removeFirstOccurrence(val);            return true;        }    }    /** Get a random element from the collection. */    public int getRandom() {        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(); */
0 0
原创粉丝点击