Untitled

 avatar
unknown
plain_text
5 months ago
1.5 kB
3
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