Simple Java Solution using Array: Runtime: O(n) and Space O(k)
Simple solution:\n\n\n```\npublic List busiestServers(int k, int[] arrival, int[] load) {\n\n        int[] serversAvailability = new int[k];\n        int[] serv
Simple solution:\n\n\n```\npublic List<Integer> busiestServers(int k, int[] arrival, int[] load) {\n\n        int[] serversAvailability = new int[k];\n        int[] serversProcessCount = new int[k];\n\n        for (int i = 0; i < arrival.length; i++) {\n            int startTime = arrival[i];\n            int endTime = startTime + load[i];\n\n            int initialServer = i % k;\n            int currentServer = initialServer;\n\n            do {\n                int exitingProcessEndTime = serversAvailability[currentServer];\n                if (exitingProcessEndTime <= startTime) {\n                    serversAvailability[currentServer] = endTime;\n                    serversProcessCount[currentServer] = serversProcessCount[currentServer] + 1;\n                    break;\n                }\n                currentServer++;\n                if (currentServer == k) {\n                    currentServer = 0;\n                }\n            } while (currentServer != initialServer);\n        }\n\n        int max = 0;\n        Map<Integer, List<Integer>> maxProcessCountMap = new HashMap<Integer, List<Integer>>();\n        for (int i = 0; i < k; i++) {\n            if (serversProcessCount[i] >= max) {\n                max = serversProcessCount[i];\n                List<Integer> processors = maxProcessCountMap.get(max);\n                if (processors == null) {\n                    processors = new ArrayList<Integer>();\n                    maxProcessCountMap.put(max, processors);\n                }\n\n                processors.add(i);\n\n            }\n        }\n\n        return maxProcessCountMap.get(max);\n    }
[]