Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from random import randrange
- class RandomizedSet(object):
- def __init__(self):
- """
- Initialize your data structure here.
- """
- self.list, self.pos = [], {}
- 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.pos:
- return False
- else:
- self.list.append(val)
- self.pos[val] = len(self.list) - 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
- """
- # Replace it by self.list. Increases by 400 ms. Ideally both should have same number of elements.
- if val in self.pos:
- idx, last = self.pos[val], self.list[-1]
- self.list[idx], self.pos[last] = last, idx
- self.list.pop(); self.pos.pop(val, 0)
- return True
- return False
- def getRandom(self):
- """
- Get a random element from the set.
- :rtype: int
- """
- n = len(self.list)
- return self.list[random.randint(0,n-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()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement