1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| class Solution { public int scheduleCourse(int[][] courses) { Arrays.sort(courses, Comparator.comparingInt(o -> o[1])); Queue<Integer> queue = new PriorityQueue<>((o1, o2) -> Integer.compare(o2, o1));
int day = 0; for (int[] course : courses) { int duration = course[0], lastDay = course[1]; if (day + duration <= lastDay) { day += duration; queue.offer(duration); } else if (!queue.isEmpty() && duration < queue.peek()) { day -= queue.poll(); day += duration; queue.offer(duration); } }
return queue.size(); } }
|