853. 车队
- 用户通过次数49
- 用户尝试次数94
- 通过次数49
- 提交次数274
- 题目难度Medium
Ntarget
ispeed[i]position[i]
一辆车永远不会超过前面的另一辆车,但它可以追上去,并与前车以相同的速度紧接着行驶。
此时,我们会忽略这两辆车之间的距离,也就是说,它们被假定处于相同的位置。
是一些由行驶在相同位置、具有相同速度的车组成的非空集合。注意,一辆车也可以是一个车队。
即便一辆车在目的地才赶上了一个车队,它们仍然会被视作是同一个车队。
会有多少车队到达目的地?
示例:
输入:target = 12, position = [10,8,0,5,3], speed = [2,4,1,1,3] 输出:3 解释: 从 10 和 8 开始的车会组成一个车队,它们在 12 处相遇。 从 0 处开始的车无法追上其它车,所以它自己就是一个车队。 从 5 和 3 开始的车会组成一个车队,它们在 6 处相遇。 请注意,在到达目的地之前没有其它车会遇到这些车队,所以答案是 3。
提示:
0 <= N <= 10 ^ 40 <= position[i] < target- 所有车的初始位置各不相同。
int carFleet(int target, int* position, int positionSize, int* speed, int speedSize) { int ans = 0; double* time = (double *)malloc(sizeof(double) * positionSize); for(int i = 0;i < positionSize;i++){ for(int j = i + 1;j < positionSize;j++){ if(position[i] < position[j]){ int temp = position[i]; position[i] = position[j]; position[j] = temp; temp = speed[i]; speed[i] = speed[j]; speed[j] = temp; } } } for(int i = 0;i < positionSize;i++){ time[i] = (target - position[i])/(speed[i] * 1.0); } int i = 1; double start = time[0]; while(i < positionSize){ if(start >= time[i]) i++; else{ ans++; start = time[i]; i++; } } ans++; if(positionSize == 0) ans = 0; return ans; }文章来源: LeetCode 853. 车队