Why is the approach with Hash map and an array taking 900 ms. Is there a way to do this better?


  • 0
    P
    import random
    class RandomizedSet(object):
    
        def __init__(self):
            """
            Initialize your data structure here.
            """
            self.Dict = {}
            self.data_array = []
            
        
        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 not in self.Dict.keys():
                self.data_array.append(val)
                size = len(self.data_array)
                self.Dict[val] = size-1
                
                return True
            else:
                return False
            
    
        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.Dict.keys():
                index,last = self.Dict[val],self.data_array[-1]
                self.data_array[index],self.Dict[last] = last,index
                self.data_array.pop()
                self.Dict.pop(val,0)
                return True
            else:
                return False
            
    
        def getRandom(self):
            """
            Get a random element from the set.
            :rtype: int
            """
            
            size = len(self.data_array)
            rand_index = random.randint(0,size-1)
            return self.data_array[rand_index]
    
    
    
    # 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()
    

Log in to reply
 

Looks like your connection to LeetCode Discuss was lost, please wait while we try to reconnect.