Insert Delete GetRandom O(1)
import random
class RandomizedSet:
def __init__(self):
self.arr = []
self.cache = {}
def insert(self, val: int) -> bool:
if val in self.cache:
return False
ix = len(self.arr)
self.cache[val] = ix
self.arr.append(val)
return True
def remove(self, val: int) -> bool:
if val not in self.cache:
return False
temp = self.arr[-1]
self.arr.pop()
if temp == val:
self.cache.pop(temp)
return True
else:
self.arr[self.cache[val]] = temp
self.cache[temp] = self.cache[val]
self.cache.pop(val)
return True
def getRandom(self) -> int:
return random.choice(self.arr)