Skip to content

Instantly share code, notes, and snippets.

@Lugriz
Created February 20, 2020 08:03
Show Gist options
  • Save Lugriz/0a0d412305998063527246c2c6076721 to your computer and use it in GitHub Desktop.
Save Lugriz/0a0d412305998063527246c2c6076721 to your computer and use it in GitHub Desktop.
Insert Delete GetRandom O(1)
import random
class RandomizedSet:
"""
set = { 1: 0, 2: 1 }
indexes = { 0: 1, 1: 2}
"""
def __init__(self):
self.set = {}
self.indexes = {}
self.index = 0
def insert(self, val: int) -> bool:
if val in self.set:
return False
self.set[val] = self.index
self.indexes[self.index] = val
self.index += 1
return True
def remove(self, val: int) -> bool:
if val in self.set:
self.index -= 1
index = self.set[val]
lastValue = self.indexes[self.index]
self.indexes[index] = lastValue
self.set[lastValue] = index
del self.set[val]
del self.indexes[self.index]
return True
return False
def getRandom(self) -> int:
length = len(self.set)
if length > 0:
randIndex = random.randrange(length)
return self.indexes[randIndex]
return None
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment