Leetcode 853.车队
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.车队相关推荐
- Leetcode 853. 车队(Car Fleet)
Leetcode 853.车队 1 题目描述(Leetcode题目链接) N 辆车沿着一条车道驶向位于 target 英里之外的共同目的地. 每辆车 i 以恒定的速度 speed[i] (英里 ...
- LeetCode 853. 车队(排序)
1. 题目 N 辆车沿着一条车道驶向位于 target 英里之外的共同目的地. 每辆车 i 以恒定的速度 speed[i] (英里/小时),从初始位置 position[i] (英里) 沿车道驶向目的 ...
- leetcode 853. 车队
题目: N 辆车沿着一条车道驶向位于 target 英里之外的共同目的地. 每辆车 i 以恒定的速度 speed[i] (英里/小时),从初始位置 position[i] (英里) 沿车道驶向目的地 ...
- LeetCode 1776. 车队 II(单调栈)
文章目录 1. 题目 2. 解题 1. 题目 在一条单车道上有 n 辆车,它们朝着同样的方向行驶. 给你一个长度为 n 的数组 cars ,其中 cars[i] = [positioni, speed ...
- leetcode 853. Car Fleet | 853. 车队(Golang)
题目 https://leetcode.com/problems/car-fleet/ 题解 看了答案 分析 我们首先对这些车辆按照它们的起始位置降序排序,并且用 (target - position ...
- C#LeetCode刷题-栈
栈篇 # 题名 刷题 通过率 难度 20 有效的括号 C#LeetCode刷题之#20-有效的括号(Valid Parentheses) 33.0% 简单 42 接雨水 35.6% 困难 71 简化路 ...
- Leetcode题目分类指南(单独刷题或学习算法书籍配合使用)
Leetcode题目分类指南 笔者在学习<算法导论>同时,希望能够配合Leetcode的题目进行分类模块化练习,该分类为笔者自己根据做题学习经验,结合<算法导论>的内容,给出L ...
- leetcode算法练习 JavaScript实现
leetcode 表格内容由spider.js从leetcode-cn.com爬取. 已做题目答案也从leetcode-cn.com中爬取并生成文件. 解题进度:已解决 140/637 - 简单 94 ...
- LeetCode中的那些题
目录 1. 两数之和 2. 两数相加 3. 无重复字符的最长子串 *******4.寻找两个有序数组的中位数(官方解答) : 5.最长回文子串(官方解答) 15. 三数之和 16. 最接近的三数之和 ...
最新文章
- 异常机制及throw与throws的区别 (z)
- 最佳适应算法模拟内存分配
- ITK:遍历具有成形邻域的图像区域
- Java代码优化:使用构造函数和使用一个setter的效率差别
- Spark 2.2.0 文档中文版 Collaborative Filtering 协同过滤 JAVA推荐系统
- java根据exif旋转,关于图片文件旋转JPEG与EXIF信息
- Oracle循环语句
- python程序化 k线指定时间更新_Python获取股票历史、实时数据与更新到数据库
- 使用ExtJs实现文件下载
- jq-ui的Sortable插件 两列布局 左右拖拽
- V-by-One基础知识
- 【linux】vi常用快捷键
- 生活随记-很有意思的评论
- 用Python做一个自动发送邮件的工具
- JS瀑布流插件 -- salvattore
- java nio oio_Java NIO框架Netty教程(十四)-Netty中OIO模型(对比NIO)
- 软件工程毕业设计课题(21)基于JAVA毕业设计电子书小说网站系统毕设作品项目
- GB18030全汉字表
- Axure 中继器表格背景颜色交替不成功
- 《我是一只IT小小鸟》连载