380. Insert Delete GetRandom O(1)
mediumArray · Hash Table · Math · Design · Randomized
read the problem on leetcode →
first solved 15 Aug 2024 · 2 accepted submissions
import random
class RandomizedSet:
def __init__(self):
self.arr = []
self.pos = {}
def insert(self, val: int) -> bool:
if val in self.pos:
return False
self.pos[val] = len(self.arr)
self.arr.append(val)
return True
def remove(self, val: int) -> bool:
if val not in self.pos:
return False
index = self.pos[val]
last = self.arr[-1]
self.arr[index] = last
self.pos[last] = index
self.arr.pop()
del self.pos[val]
return True
def getRandom(self) -> int:
return random.choice(self.arr)import random
class RandomizedSet:
def __init__(self):
self.lst = []
self.idx_map = {}
def search(self, val):
return val in self.idx_map
def insert(self, val):
if self.search(val):
return False
self.lst.append(val)
self.idx_map[val] = len(self.lst) - 1
return True
def remove(self, val):
if not self.search(val):
return False
idx = self.idx_map[val]
self.lst[idx] = self.lst[-1]
self.idx_map[self.lst[-1]] = idx
self.lst.pop()
del self.idx_map[val]
return True
def getRandom(self):
return random.choice(self.lst)