码迷,mamicode.com
首页 > 其他好文 > 详细

380 Insert Delete GetRandom O(1)

时间:2018-08-10 16:00:27      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:contains   spec   zed   key   tin   shm   删掉   get   put   

https://www.youtube.com/watch?v=y240Qh9H9uk


https://github.com/tongzhang1994/Facebook-Interview-Coding/blob/master/380.%20Insert%20Delete%20GetRandom%20O(1).java这个答案


就是花花讲的 java 版本。 用 hashmap 和 arraylist .
 删除的时候,把要删除的元素和数组的最后一位元素的数值换一下
然后可以删掉数组的最后一个元素 还有哈希表里要删的元素

Line 4: error: <identifier> expected





class RandomizedCollection {

    /** Initialize your data structure here. */
    private HashMap<Integer, Integer>() map;
    private List<Integer> list;
    Random random; //////////
  
    public RandomizedCollection() {
      map = new HashMap<>();
      list = new ArrayList<>();
      random = new Random();
    }
    
    /** Inserts a value to the collection. Returns true if the collection did not already contain the specified element. */
    public boolean insert(int val) {
      if(!map.containsKey(val)){
        map.put(val, list.size());
        list.add(val);
        return true;
      }else{
        return false;
      }
        
    }
    
    /** 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;
      }else{
        // contains val
        int pos = map.get(val);
        int lastVal = list.get(list.size() - 1);
        map.put(lastVal, pos);
        list.set(pos, lastVal);
        map.remove(val);
        list.remove(list.size()-1);
        return true;
      }
        
    }
    
    /** Get a random element from the collection. */
    public int getRandom() {
      return list.get(random.nextInt(list.size()));///// list.get(random.nextInt(list.size()))
        
    }
}

 

380 Insert Delete GetRandom O(1)

标签:contains   spec   zed   key   tin   shm   删掉   get   put   

原文地址:https://www.cnblogs.com/tobeabetterpig/p/9454883.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!