力扣练习之常数时间插入、删除和获取随机元素

我爱海鲸 2023-04-23 23:08:25 力扣、中级算法

简介中级算法、设计问题

原题出处:https://leetcode.cn/leetbook/read/top-interview-questions-medium/xw5rt1/

解法一:

class RandomizedSet:

    def __init__(self):
        self.res = []


    def insert(self, val: int) -> bool:
        if val not in self.res:
            self.res.append(val)
            return True
        return False

    def remove(self, val: int) -> bool:
        if val not in self.res:
            return False
        index = self.res.index(val)
        del self.res[index]
        return True


    def getRandom(self) -> int:
        return random.choice(self.res)


# Your RandomizedSet object will be instantiated and called as such:
# obj = RandomizedSet()
# param_1 = obj.insert(val)
# param_2 = obj.remove(val)
# param_3 = obj.getRandom()

思路:map的思路,就是用一个数组存,然后通过索引删,通过一个随机数查。

你好:我的2025