Interview Question
Software DevelopersCountry: India
Interview Type: Phone Interview
{{static int minTime(int n, int k, List<Integer> timeArr) {
int[] tasksArr = new int[k];
timeArr.sort(Comparator.naturalOrder());
for (int i = 0; i < k; i++) {
tasksArr[i] = 1;
n--;
}
while (n > 0) {
int smallest = Integer.MAX_VALUE;
int whoIsDoneIndex = -1;
for (int i = 0; i < k; i++) {
if (tasksArr[i] * timeArr.get(i) < smallest) {
smallest = tasksArr[i] * timeArr.get(i);
whoIsDoneIndex = i;
}
}
tasksArr[whoIsDoneIndex] = tasksArr[whoIsDoneIndex] + 1;
n--;
}
int maxValue = Integer.MIN_VALUE;
for (int i = 0; i < k; i++) {
maxValue = Math.max(maxValue, tasksArr[i] * timeArr.get(i));
}
return maxValue;
}
}}
Typo in the explanation, minimum time taken is 2 minutes.
- viksvampire19 December 03, 2017