Insert Delete GetRandom O(1)
dict+list Version - 80 ms
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| import random class RandomizedSet(object): def __init__(self): """ Initialize your data structure here. """ self.data = [] self.idxs = {} self.cnt = 0 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.idxs: return False else: self.data.append(val) self.idxs[val] = self.cnt self.cnt += 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 in self.idxs: idx, value = self.idxs[val], self.data[-1] self.idxs[value], self.data[idx] = idx, value self.data.pop() self.idxs.pop(val, 0) self.cnt -= 1 return True else: return False def getRandom(self): """ Get a random element from the set. :rtype: int """ return random.choice(self.data)
|
leet code