mirror of
https://github.com/autistic-symposium/master-algorithms-py.git
synced 2025-04-29 20:26:07 -04:00
Update random_set.py
This commit is contained in:
parent
6f1dd06515
commit
40a4976c5f
@ -4,28 +4,41 @@
|
|||||||
|
|
||||||
import random
|
import random
|
||||||
|
|
||||||
|
|
||||||
class RandomizedSet:
|
class RandomizedSet:
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.set = []
|
|
||||||
self.dict = {}
|
self.random_set = {}
|
||||||
|
self.index_list = []
|
||||||
|
|
||||||
def insert(self, val: int) -> bool:
|
def insert(self, val: int) -> bool:
|
||||||
if val in self.dict:
|
|
||||||
|
if val in self.random_set.keys():
|
||||||
return False
|
return False
|
||||||
self.set.append(val)
|
|
||||||
self.dict[val] = len(self.set)
|
self.index_list.append(val)
|
||||||
|
self.random_set[val] = len(self.index_list)
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def remove(self, val: int) -> bool:
|
def remove(self, val: int) -> bool:
|
||||||
if val in self.dict:
|
|
||||||
last_element, idx = self.set[-1], self.dict[val]
|
if val in self.random_set.keys():
|
||||||
self.set[idx], self.dict[last_element] = last_element, idx
|
|
||||||
self.set.pop()
|
last_element = self.index_list[-1]
|
||||||
del self.dict[val]
|
index_val = self.random_set[val]
|
||||||
|
self.index_list[index_val] = last_element
|
||||||
|
self.random_set[last_element] = index_val
|
||||||
|
|
||||||
|
self.index_list.pop()
|
||||||
|
del self.random_set[val]
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def get_random(self) -> int:
|
def get_random(self) -> int:
|
||||||
return random.choice(self.set)
|
|
||||||
|
return random.choice(self.index_list)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user