当前位置: 首页 > news >正文

网站交互技术广州网站优化关键词排名

网站交互技术,广州网站优化关键词排名,做游戏陪玩网站,软件技术有限公司本文涉及的基础知识点 C单调栈 LeetCode853. 车队 在一条单行道上,有 n 辆车开往同一目的地。目的地是几英里以外的 target 。 给定两个整数数组 position 和 speed ,长度都是 n ,其中 position[i] 是第 i 辆车的位置, speed[i…

本文涉及的基础知识点

C++单调栈

LeetCode853. 车队

在一条单行道上,有 n 辆车开往同一目的地。目的地是几英里以外的 target 。
给定两个整数数组 position 和 speed ,长度都是 n ,其中 position[i] 是第 i 辆车的位置, speed[i] 是第 i 辆车的速度(单位是英里/小时)。
一辆车永远不会超过前面的另一辆车,但它可以追上去,并以较慢车的速度在另一辆车旁边行驶。
车队 是指并排行驶的一辆或几辆汽车。车队的速度是车队中 最慢 的车的速度。
即便一辆车在 target 才赶上了一个车队,它们仍然会被视作是同一个车队。
返回到达目的地的车队数量 。
示例 1:
输入:target = 12, position = [10,8,0,5,3], speed = [2,4,1,1,3]
输出:3
解释:
从 10(速度为 2)和 8(速度为 4)开始的车会组成一个车队,它们在 12 相遇。车队在 target 形成。
从 0(速度为 1)开始的车不会追上其它任何车,所以它自己是一个车队。
从 5(速度为 1) 和 3(速度为 3)开始的车组成一个车队,在 6 相遇。车队以速度 1 移动直到它到达 target。
示例 2:
输入:target = 10, position = [3], speed = [3]
输出:1
解释:
只有一辆车,因此只有一个车队。
示例 3:
输入:target = 100, position = [0,2,4], speed = [4,2,1]
输出:1
解释:
从 0(速度为 4) 和 2(速度为 2)开始的车组成一个车队,在 4 相遇。从 4 开始的车(速度为 1)移动到了 5。
然后,在 4(速度为 2)的车队和在 5(速度为 1)的车成为一个车队,在 6 相遇。车队以速度 1 移动直到它到达 target。
提示:
n == position.length == speed.length
1 <= n <= 105
0 < target <= 106
0 <= position[i] < target
position 中每个值都 不同
0 < speed[i] <= 106

单调栈

性质一:车头速度没边,其它车有可能变化。
性质二:postion[i1] > postion[i2],由于不能超车,则i1从始至终都在i2前面。
性质三:排除i1和i2以外的所有车,如果i2能赶上i1,则在本题一定能加入一个车队。
性质四 ∀ \forall i1,postion[i1] > postion[i2], 排除i1和i2以外的所有车,i2都赶不上i1。则在本题中,i2赶不上任何一两车,即无法加入车队,成为车头。可以用反证法证明:如果加入车队时,车头是i1,车头速度没降。那么除去i1、i2外,i2也能赶上i1。
indexs是postion的下标,postion[indexs[i]] 降序排序。
for(i : indexs) 处理postion[i]和speed[i]。
如果前面有车到达终点需要的时间 >= 当前车需要的时间,则本车会加入车队。
否则是车头。
故只需要记录之前车辆的最晚到达时间,不需要单调栈。
如果需要计算撞的那辆车,则需要用单调栈记录各车时间:
如果后面的车到达时间>=前面车的到达时间,则前面的车永远不再会成为车头,故淘汰之。淘汰后,单调栈降序记录到达时间。处理完当前车队后,如果栈为空则是车头。时间相等无需特殊处理。

代码

核心代码

class Solution {public:int carFleet(int target, vector<int>& position, vector<int>& speed) {const int N = position.size();vector<int> indexs(N);iota(indexs.begin(), indexs.end(), 0);sort(indexs.begin(), indexs.end(), [&](const int i1, const int i2) {return position[i1] >position[i2]; });double maxTime = 0;int ret = 0;for (const auto& i : indexs) {double cur = (target - (double)position[i]) / speed[i];ret += (cur > maxTime);maxTime = max(maxTime, cur);}return ret;}};

单元测试

	int target;vector<int> position, speed;TEST_METHOD(TestMethod1){target = 12, position = { 8,10 }, speed = { 4,2 };auto res = Solution().carFleet(target, position, speed);AssertEx(1, res);}TEST_METHOD(TestMethod11){target = 12, position = { 10,8,0,5,3 }, speed = { 2,4,1,1,3 };auto res = Solution().carFleet(target, position, speed);AssertEx(3, res);}TEST_METHOD(TestMethod12){target = 10, position = { 3 }, speed = { 3 };auto res = Solution().carFleet(target, position, speed);AssertEx(1, res);}TEST_METHOD(TestMethod13){target = 100, position = { 0,2,4 }, speed = { 4,2,1 };auto res = Solution().carFleet(target, position, speed);AssertEx(1, res);}

扩展阅读

我想对大家说的话
工作中遇到的问题,可以按类别查阅鄙人的算法文章,请点击《算法与数据汇总》。
学习算法:按章节学习《喜缺全书算法册》,大量的题目和测试用例,打包下载。重视操作
有效学习:明确的目标 及时的反馈 拉伸区(难度合适) 专注
闻缺陷则喜(喜缺)是一个美好的愿望,早发现问题,早修改问题,给老板节约钱。
子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。
如果程序是一条龙,那算法就是他的是睛
失败+反思=成功 成功+反思=成功

视频课程

先学简单的课程,请移步CSDN学院,听白银讲师(也就是鄙人)的讲解。
https://edu.csdn.net/course/detail/38771
如何你想快速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.csdn.net/lecturer/6176

测试环境

操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法用**C++**实现。

http://www.hkea.cn/news/243975/

相关文章:

  • 巫山网站设计aso优化榜单
  • 关于节约化建设网站的表态发言网站制作报价表
  • 建行网站是多少呢故事式的软文广告例子
  • 阳江市住房和城乡规划建设局网站一级消防工程师考试
  • 做课件的网站有哪些用html制作淘宝网页
  • 网站开发前后台整个流程品牌宣传的推广
  • 深圳市门户网站建设网站推广优化方法
  • 中山公司注册网页怎么优化
  • 网站建设怎么分录2022年新闻摘抄简短
  • 江西景德镇建设厅网站太原关键词排名推广
  • 番禺做网站自媒体发布平台有哪些
  • 用dede做的网站首页电子商务网络营销
  • 最好的做任务赚钱网站网络域名怎么查
  • 建设部规范网站百度app关键词优化
  • 骏域网站百度怎么收录网站
  • 网站robots.txt查看九江seo公司
  • 建设阿里妈妈网站搜索引擎排名优化seo
  • 自学网站建设作业创建网站免费
  • 营销网站定制的优势成品网站源码的优化技巧
  • 高职学院网站建设方案广告制作
  • table表格 做的网站营销案例分析报告模板
  • pc端网站做移动适配教育培训机构管理系统
  • 页游传奇排行榜无锡seo优化公司
  • 广西南宁网站设计百度seo算法
  • 网站建设服务怎么样近期国内热点新闻事件
  • 阿里巴巴网站国际站建设seo托管服务
  • 企业网站优化之如何做需求分析网奇seo赚钱培训
  • 施工企业会计制度收入确认规定百度自然排名优化
  • 校园网站建设意义网络营销的特点有哪些
  • 内江做网站哪里便宜google搜索关键词热度