删除、插入均为二分查找
import random
class RandomizedSet:
def __init__(self):
self.nums = []
def insert(self, val: int) -> bool:
l = 0
r = len(self.nums)-1
while l <= r:
mid = (l + r) // 2
if self.nums[mid] > val:
r -= 1
elif self.nums[mid] < val:
l += 1
else:
return False
self.nums.insert(l, val)
return True
def remove(self, val: int) -> bool:
l = 0
r = len(self.nums)-1
while l <= r:
mid = (l + r) // 2
if self.nums[mid] > val:
r -= 1
elif self.nums[mid] < val:
l += 1
else:
self.nums = self.nums[:mid] + self.nums[mid+1:]
return True
return False
def getRandom(self) -> int:
r = random.choice(range(0, len(self.nums)))
return self.nums[r]