From 40a4976c5f6c07113b6270a16bbdf4bfeb3f9c31 Mon Sep 17 00:00:00 2001 From: marina <138340846+bt3gl-cryptographer@users.noreply.github.com> Date: Mon, 7 Aug 2023 20:31:43 -0700 Subject: [PATCH] Update random_set.py --- sets/random_set.py | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/sets/random_set.py b/sets/random_set.py index 2a11f6e..b74b978 100644 --- a/sets/random_set.py +++ b/sets/random_set.py @@ -4,28 +4,41 @@ import random + class RandomizedSet: def __init__(self): - self.set = [] - self.dict = {} + + self.random_set = {} + self.index_list = [] def insert(self, val: int) -> bool: - if val in self.dict: + + if val in self.random_set.keys(): 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 def remove(self, val: int) -> bool: - if val in self.dict: - last_element, idx = self.set[-1], self.dict[val] - self.set[idx], self.dict[last_element] = last_element, idx - self.set.pop() - del self.dict[val] + + if val in self.random_set.keys(): + + last_element = self.index_list[-1] + 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 False def get_random(self) -> int: - return random.choice(self.set) + + return random.choice(self.index_list)