mycode
import random class RandomizedSet(object): def __init__(self): """ Initialize your data structure here. """ self.s = [] def insert(self, val): """ Inserts a value to the set. Returns true if the set did not already contain the specified element. :type val: int :rtype: bool """ if val in self.s: return False else: self.s.append(val) return True def remove(self, val): """ Removes a value from the set. Returns true if the set contained the specified element. :type val: int :rtype: bool """ if val in self.s: self.s.remove(val) return True else: return False def getRandom(self): """ Get a random element from the set. :rtype: int """ return self.s[random.randint(0,len(self.s)-1)] # 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()
参考:
emmmm。。。我直接调用的???我的天。。。
思路:用dic来查找,找到后去insert和删除
import random class RandomizedSet(object): def __init__(self): self.data = [] self.pos = {} def insert(self, val): if val in self.pos: return False self.data.append(val) self.pos[val] = len(self.data) - 1 return True def remove(self, val): """ Removes a value from the set. Returns true if the set contained the specified element. :type val: int :rtype: bool """ if val not in self.pos: return False last = self.data[-1] elt = self.pos[val] self.data[elt] = last self.pos[last] = elt self.data.pop() del self.pos[val] return True def getRandom(self): return random.choice(self.data) # 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()