zoukankan      html  css  js  c++  java
  • leetcode-mid-design-380. Insert Delete GetRandom O(1)

    mycode

    import random
    class RandomizedSet(object):
    
        def __init__(self):
            """
            Initialize your data structure here.
            """
            self.s = []
    
    
        def insert(self, val):
            """
            Inserts a value to the set. Returns true if the set did not already contain the specified element.
            :type val: int
            :rtype: bool
            """
            if val in self.s:
                
                return False
            else:
                self.s.append(val)
                return True
            
    
        def remove(self, val):
            """
            Removes a value from the set. Returns true if the set contained the specified element.
            :type val: int
            :rtype: bool
            """
            if val in self.s:
                self.s.remove(val)
                return True
            else:
                return False
            
    
        def getRandom(self):
            """
            Get a random element from the set.
            :rtype: int
            """
            return self.s[random.randint(0,len(self.s)-1)]
            
    
    
    # Your RandomizedSet object will be instantiated and called as such:
    # obj = RandomizedSet()
    # param_1 = obj.insert(val)
    # param_2 = obj.remove(val)
    # param_3 = obj.getRandom()

    参考:

    emmmm。。。我直接调用的???我的天。。。

    思路:用dic来查找,找到后去insert和删除

    import random
    
    class RandomizedSet(object):
    
        def __init__(self):
            self.data = []
            self.pos = {}
    
        def insert(self, val):
            if val in self.pos:
                return False
            
            self.data.append(val)
            self.pos[val] = len(self.data) - 1
            
            return True
    
        def remove(self, val):
            """
            Removes a value from the set. Returns true if the set contained the specified element.
            :type val: int
            :rtype: bool
            """
            if val not in self.pos:
                return False
            
            last = self.data[-1]
            elt = self.pos[val]
            self.data[elt] = last
            self.pos[last] = elt
            self.data.pop()
            del self.pos[val]
            
            return True
    
        def getRandom(self):
            return random.choice(self.data)
            
    
    
    # Your RandomizedSet object will be instantiated and called as such:
    # obj = RandomizedSet()
    # param_1 = obj.insert(val)
    # param_2 = obj.remove(val)
    # param_3 = obj.getRandom()
  • 相关阅读:
    前端展示(四)
    小谢第66问:页面关闭鼠标光标
    小谢第64问:nuxt项目中增加百度分析统计
    js 判断当前是手机还是电脑
    布谷鸟自定义教程
    vs code常用插件及配置
    小程序几件小事儿
    删除 json 数据中的某一项
    小程序图片预览
    小程序 navigator 取消点击效果
  • 原文地址:https://www.cnblogs.com/rosyYY/p/10980323.html
Copyright © 2011-2022 走看看