题目:
算法思想:
代码:
class Solution {
public static boolean carPooling(int[][] trips, int capacity) {
PriorityQueue<int[]> queue = new PriorityQueue<>(new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[2] - o2[2];
}
});
for (int[] trip : trips) {
queue.add(trip);
}
while (!queue.isEmpty()) {
System.out.println(Arrays.toString(queue.poll()));
}
System.out.println("-----------------");
Arrays.sort(trips, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[1] - o2[1];
}
});
for (int[] trip : trips) {
System.out.println(Arrays.toString(trip));
}
System.out.println("-----------------");
for (int[] trip : trips) {
capacity = capacity - trip[0];
if (capacity < 0) {
while(!queue.isEmpty() && queue.peek()[2] <= trip[1]) {
capacity = capacity + queue.poll()[0];
}
if (capacity < 0) {
return false;
}
}
queue.add(trip);
}
return true;
}
}