LeetCode 853. 车队

匿名 (未验证) 提交于 2019-12-03 00:29:01
  • 用户通过次数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。 


提示:

  1. 0 <= N <= 10 ^ 4
  2. 0 <= position[i] < target
  3. 所有车的初始位置各不相同。



















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. 车队
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!