class LoadBalancer:
def __init__(self):
# do intialization if necessary
self.server_ids = []
self.id2index = {}
"""
@param: server_id: add a new server to the cluster
@return: nothing
"""
def add(self, server_id):
# write your code here
if server_id in self.id2index:
return
self.server_ids.append(server_id)
self.id2index[server_id] = len(self.server_ids) - 1
"""
@param: server_id: server_id remove a bad server from the cluster
@return: nothing
"""
def remove(self, server_id):
# write your code here
if server_id not in self.id2index:
return
index = self.id2index[server_id]
self.server_ids[index] = self.server_ids[-1]
self.id2index[self.server_ids[-1]] = index
self.server_ids.pop()
del self.id2index[server_id]
"""
@return: pick a server in the cluster randomly with equal probability
"""
def pick(self):
# write your code here
import random
index = random.randint(0, len(self.server_ids) - 1)
return self.server_ids[index]
Time O(1). Space O(1).