853. 车队

题目难度 Medium

题目描述: N 辆车沿着一条车道驶向位于 target 英里之外的共同目的地。每辆车 i 以恒定的速度 speed[i] (英里/小时),从初始位置 position[i] (英里) 沿车道驶向目的地。一辆车永远不会超过前面的另一辆车,但它可以追上去,并与前车以相同的速度紧接着行驶。此时,我们会忽略这两辆车之间的距离,也就是说,它们被假定处于相同的位置。车队 是一些由行驶在相同位置、具有相同速度的车组成的非空集合。注意,一辆车也可以是一个车队。即便一辆车在目的地才赶上了一个车队,它们仍然会被视作是同一个车队。

会有多少车队到达目的地?

总结:

方法一(执行用时1044ms):

1. 对于每一辆车都有位置和速度两种数据,而要判断车A是否能追上车B,只需判断车A到达终点的时间是否小于车B到达终点的时间。因此,我们需要先计算出每一辆车到达终点的时间,并用一个数组存起来。
2. 但在之前,为了便于比较,先对position数组和speed数组同时排序,按离终点的距离由近及远。
3. 计算每一辆车的时间并存于time数组,用一层循环搞定,位移除以速度。
4. 接下来(从离终点由近及远,也就是从time数组开头)遍历整个time数组,用一个临时变量strat保存当前车队的时间(初始化为第一个time),然后遍历time数组,如果strat >=time[i], 即离终点更近的车队用时比后面的车队t还多,所以后面的车队t将要追上车队strat,此时将 i 自增指向下一个time来寻找是否还有后面的车队追上strat车队;;如果strat<time[i] , 表明后面的车队 i 已无法追上strat车队,所以储存到达终点的车队数的变量anns+1,并将strat赋值为time[i] , ;;直至循环结束。
5. 遍历完之后实际上还有一个车队未计入anns,自加。但是,如果本身的position数组为空,则会输出车队为1的错误,因此最后需要用一个条件判断

下给出代码:

class Solution {public:int carFleet(int target, vector<int>& position, vector<int>& speed) {double *time = new double [position.size()];int anns=0;for(int i=0;i<position.size();i++)         //选择法排序for(int j=i+1;j<position.size();j++){if(position[i]<position[j]){swap(position[i],position[j]);swap(speed[i],speed[j]);}}for(int i=0;i<position.size();i++)time[i]=(target-position[i])/(speed[i]*1.0);double strat=time[0];for(int i=0;i<position.size();)  //遍历time[]{if(strat>=time[i])i++;else{anns++;strat=time[i++];}}anns++;if(position.size()==0)anns=0; //return anns;}
};

方法二(执行用时28ms范例):

下给出代码:

class Solution {public:int carFleet(int target, vector<int>& position, vector<int>& speed) {map<int,int>ps;for(int i=0;i<position.size();i++){ps[position[i]]=speed[i];}int result=0;double time=0;map<int,int>::reverse_iterator rit=ps.rbegin();for(;rit!=ps.rend();rit++){if((target-rit->first)*1.0/rit->second>time){result+=1;time=(target-rit->first)*1.0/rit->second;}}return result;}
};

Leetcode 853.车队相关推荐

  1. Leetcode 853. 车队(Car Fleet)

    Leetcode 853.车队 1 题目描述(Leetcode题目链接)   N 辆车沿着一条车道驶向位于 target 英里之外的共同目的地.   每辆车 i 以恒定的速度 speed[i] (英里 ...

  2. LeetCode 853. 车队(排序)

    1. 题目 N 辆车沿着一条车道驶向位于 target 英里之外的共同目的地. 每辆车 i 以恒定的速度 speed[i] (英里/小时),从初始位置 position[i] (英里) 沿车道驶向目的 ...

  3. leetcode 853. 车队

    题目: N  辆车沿着一条车道驶向位于 target 英里之外的共同目的地. 每辆车 i 以恒定的速度 speed[i] (英里/小时),从初始位置 position[i] (英里) 沿车道驶向目的地 ...

  4. LeetCode 1776. 车队 II(单调栈)

    文章目录 1. 题目 2. 解题 1. 题目 在一条单车道上有 n 辆车,它们朝着同样的方向行驶. 给你一个长度为 n 的数组 cars ,其中 cars[i] = [positioni, speed ...

  5. leetcode 853. Car Fleet | 853. 车队(Golang)

    题目 https://leetcode.com/problems/car-fleet/ 题解 看了答案 分析 我们首先对这些车辆按照它们的起始位置降序排序,并且用 (target - position ...

  6. C#LeetCode刷题-栈

    栈篇 # 题名 刷题 通过率 难度 20 有效的括号 C#LeetCode刷题之#20-有效的括号(Valid Parentheses) 33.0% 简单 42 接雨水 35.6% 困难 71 简化路 ...

  7. Leetcode题目分类指南(单独刷题或学习算法书籍配合使用)

    Leetcode题目分类指南 笔者在学习<算法导论>同时,希望能够配合Leetcode的题目进行分类模块化练习,该分类为笔者自己根据做题学习经验,结合<算法导论>的内容,给出L ...

  8. leetcode算法练习 JavaScript实现

    leetcode 表格内容由spider.js从leetcode-cn.com爬取. 已做题目答案也从leetcode-cn.com中爬取并生成文件. 解题进度:已解决 140/637 - 简单 94 ...

  9. LeetCode中的那些题

    目录 1. 两数之和 2. 两数相加 3. 无重复字符的最长子串 *******4.寻找两个有序数组的中位数(官方解答) : 5.最长回文子串(官方解答) 15. 三数之和 16. 最接近的三数之和 ...

最新文章

  1. 异常机制及throw与throws的区别 (z)
  2. 最佳适应算法模拟内存分配
  3. ITK:遍历具有成形邻域的图像区域
  4. Java代码优化:使用构造函数和使用一个setter的效率差别
  5. Spark 2.2.0 文档中文版 Collaborative Filtering 协同过滤 JAVA推荐系统
  6. java根据exif旋转,关于图片文件旋转JPEG与EXIF信息
  7. Oracle循环语句
  8. python程序化 k线指定时间更新_Python获取股票历史、实时数据与更新到数据库
  9. 使用ExtJs实现文件下载
  10. jq-ui的Sortable插件 两列布局 左右拖拽
  11. V-by-One基础知识
  12. 【linux】vi常用快捷键
  13. 生活随记-很有意思的评论
  14. 用Python做一个自动发送邮件的工具
  15. JS瀑布流插件 -- salvattore
  16. java nio oio_Java NIO框架Netty教程(十四)-Netty中OIO模型(对比NIO)
  17. 软件工程毕业设计课题(21)基于JAVA毕业设计电子书小说网站系统毕设作品项目
  18. GB18030全汉字表
  19. Axure 中继器表格背景颜色交替不成功
  20. 《我是一只IT小小鸟》连载

热门文章

  1. Android应用使用自定义字体
  2. 微信支付不再免费,浅谈它的四年发展史
  3. pytorch 反卷积 可视化_Toybrick
  4. android uart 助手,android串口通讯助手源码(ComAssistant)
  5. 赵子琪“愿让位小三”哪来的自信
  6. 灵魂拷问,MySQL索引知多少?
  7. Ubuntu离线源的制作
  8. 小程序源码:和平精英吃鸡捏脸数据助手
  9. Echarts折线图属性设置大全
  10. 23.288 NWDAF