Load Balancer – Python 3 (Week 12 – 05)

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).

Leave a comment

Design a site like this with WordPress.com
Get started