Untitled
unknown
plain_text
10 months ago
1.5 kB
6
Indexable
import java.util.*;
public class TaskScheduler {
public static int minTime(int[] taskTypes, int[] memories, int M) {
// Group tasks by their type
Map<Integer, List<Integer>> taskMap = new HashMap<>();
for (int i = 0; i < taskTypes.length; i++) {
int type = taskTypes[i];
int memory = memories[i];
taskMap.computeIfAbsent(type, k -> new ArrayList<>()).add(memory);
}
int totalTime = 0;
for (List<Integer> memList : taskMap.values()) {
// Sort the memory list for the current task type
Collections.sort(memList);
int n = memList.size();
int pairs = 0;
int left = 0, right = n - 1;
// Use two-pointer technique to find valid pairs
while (left < right) {
if (memList.get(left) + memList.get(right) <= M) {
pairs++;
left++;
right--;
} else {
right--;
}
}
// Calculate time for the current task type
totalTime += (n - pairs);
}
return totalTime;
}
public static void main(String[] args) {
int[] taskTypes = {1, 2, 1, 2, 2, 3};
int[] memories = {4, 4, 3, 7, 10, 3};
int M = 10;
System.out.println(minTime(taskTypes, memories, M)); // Output: 5
}
}Editor is loading...
Leave a Comment