在一條單行道上,有 n 輛車開往同一目的地。目的地是幾英里以外的 target 刽严。
給定兩個整數(shù)數(shù)組 position 和 speed 蹬碧,長度都是 n 舱禽,其中 position[i] 是第 i 輛車的位置, speed[i] 是第 i 輛車的速度(單位是英里/小時)恩沽。
一輛車永遠不會超過前面的另一輛車誊稚,但它可以追上去,并與前車 以相同的速度 緊接著行駛。此時里伯,我們會忽略這兩輛車之間的距離城瞎,也就是說,它們被假定處于相同的位置疾瓮。
車隊 是一些由行駛在相同位置脖镀、具有相同速度的車組成的非空集合。注意狼电,一輛車也可以是一個車隊蜒灰。
即便一輛車在目的地才趕上了一個車隊,它們?nèi)匀粫灰曌魇峭粋€車隊肩碟。
返回到達目的地的 車隊數(shù)量 强窖。
輸入:target = 12, position = [10,8,0,5,3], speed = [2,4,1,1,3]
輸出:3
解釋:
從 10 和 8 開始的車會組成一個車隊,它們在 12 處相遇腾务。
從 0 處開始的車無法追上其它車毕骡,所以它自己就是一個車隊。
從 5 和 3 開始的車會組成一個車隊岩瘦,它們在 6 處相遇未巫。
請注意,在到達目的地之前沒有其它車會遇到這些車隊启昧,所以答案是 3叙凡。
class Car {
int position;
double time;
public Car (int position, double time) {
this.position = position;
this.time = time;
}
}
class Solution {
public int carFleet(int target, int[] position, int[] speed) {
Car[] cars = new Car[position.length];
for (int i = 0; i < position.length; i++) {
cars[i] = new Car(position[i], (double) (target - position[i]) / speed[i]);
}
Arrays.sort(cars, new Comparator<Car>() {
@Override
public int compare(Car o1, Car o2) {
return o1.position - o2.position;
}
});
int count = position.length;
for (int i = cars.length-1; i > 0; i--) {
if (cars[i].time >= cars[i-1].time) {
count--;
cars[i-1].time = cars[i].time;
}
}
return count;
}
}