• 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()
  • 相关阅读:
    ntp时间服务器
    locate 命令
    身份验证器
    centos 6 mysql源码安装
    简单上传下载命令lrzsz
    iptables记录日志
    iptables日志探秘
    du 命令
    Codeforces 1097F Alex and a TV Show (莫比乌斯反演)
    线段树教做人系列(1)HDU4967 Handling the Past
  • 原文地址:https://www.cnblogs.com/rosyYY/p/10980323.html
Copyright © 2020-2023  润新知