FastPrepFastPrep
Problem Brief

Get Server ID

OA

The developers of Amazon are working on a prototype for a simple load-balancing algorithm. There are num_servers servers numbered from 0 to num_servers - 1 and the initial number of requests assigned to each server is 0.

In the i-th second, a request comes from IP hash of requests[i], and it must be assigned to the server with the minimum number of requests amongst the first requests[i] servers. For example, if requests[i] = 4, the request must be assigned to the server with the minimum number of requests amongst the servers with id [0, 1, 2, 3]. If there are multiple servers with the same minimum number of requests, choose the one with the minimum id. When a request is assigned to a server, its number of requests increases by 1.

Given num_servers and the array requests, for each request, find the id of the server it is assigned to.

Function Description

Complete the function getServerId in the editor.

getServerId takes the following arguments:

  1. int num_servers: the number of servers
  2. int requests[n]: the sizes of the requests

Returns

int[n]: the ids of the servers each request is assigned to

Thanks a bajillion, spike!

1Example 1

Input
num_servers = 5, requests = [3, 2, 3, 2, 4]
Output
[0, 1, 2, 0, 3]
Explanation
Example 1 illustration

The requests are processed as follows: Hence the answer is [0, 1, 2, 0, 3].

2Example 2

Input
num_servers = 5, requests = [4, 0, 2, 2]
Output
[0, 0, 1, 1]
Explanation

After the first request, the number of requests is [1, 0, 0, 0, 0]. After the second request, the number of requests is [2, 0, 0, 0, 0]. After the third request, the number of requests is [2, 1, 0, 0, 0]. After the fourth request, the number of requests is [2, 1, 1, 0, 0].

3Example 3

Input
num_servers = 5, requests = [0, 1, 2, 3]
Output
[0, 0, 1, 2]
Explanation

Each request is assigned to the first index with the number of requests equal to 0.

Constraints

Limits and guarantees your solution can rely on.

  • 1 ≤ num_servers ≤ 10^5
  • 0 ≤ requests[i] < num_servers
public int[] getServerId(int num_servers, int[] requests) {
  // write your code here
}
Input

num_servers

5

requests

[3, 2, 3, 2, 4]

Output

[0, 1, 2, 0, 3]

Sign in to submit your solution.