You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
864 B
34 lines
864 B
package class51;
|
|
|
|
import java.util.Arrays;
|
|
import java.util.PriorityQueue;
|
|
|
|
public class Problem_0630_CourseScheduleIII {
|
|
|
|
public static int scheduleCourse(int[][] courses) {
|
|
// courses[i] = {花费,截止}
|
|
Arrays.sort(courses, (a, b) -> a[1] - b[1]);
|
|
// 花费时间的大根堆
|
|
PriorityQueue<Integer> heap = new PriorityQueue<>((a, b) -> b - a);
|
|
// 时间点
|
|
int time = 0;
|
|
for (int[] c : courses) {
|
|
//
|
|
if (time + c[0] <= c[1]) { // 当前时间 + 花费 <= 截止时间的
|
|
heap.add(c[0]);
|
|
time += c[0];
|
|
} else { // 当前时间 + 花费 > 截止时间的, 只有淘汰掉某课,当前的课才能进来!
|
|
if (!heap.isEmpty() && heap.peek() > c[0]) {
|
|
// time -= heap.poll();
|
|
// heap.add(c[0]);
|
|
// time += c[0];
|
|
heap.add(c[0]);
|
|
time += c[0] - heap.poll();
|
|
}
|
|
}
|
|
}
|
|
return heap.size();
|
|
}
|
|
|
|
}
|