文章目录

  • 1. 题目
  • 2. 解题

1. 题目

在一条单车道上有 n 辆车,它们朝着同样的方向行驶。
给你一个长度为 n 的数组 cars ,其中 cars[i] = [positioni, speedi] ,它表示:

  • positioni 是第 i 辆车和道路起点之间的距离(单位:米)。
    题目保证 positioni < positioni+1
  • speedi 是第 i 辆车的初始速度(单位:米/秒)。

简单起见,所有车子可以视为在数轴上移动的点。
当两辆车占据同一个位置时,我们称它们相遇了。
一旦两辆车相遇,它们会合并成一个车队,这个车队里的车有着同样的位置和相同的速度,速度为这个车队里 最慢 一辆车的速度。

请你返回一个数组 answer ,其中 answer[i] 是第 i 辆车与下一辆车相遇的时间(单位:秒),如果这辆车不会与下一辆车相遇,则 answer[i] 为 -1 。
答案精度误差需在 10-5 以内。

示例 1:
输入:cars = [[1,2],[2,1],[4,3],[7,2]]
输出:[1.00000,-1.00000,3.00000,-1.00000]
解释:经过恰好 1 秒以后,第一辆车会与第二辆车相遇,并形成一个 1 m/s 的车队。
经过恰好 3 秒以后,第三辆车会与第四辆车相遇,并形成一个 2 m/s 的车队。示例 2:
输入:cars = [[3,4],[5,4],[6,3],[9,1]]
输出:[2.00000,1.00000,1.50000,-1.00000]提示:
1 <= cars.length <= 10^5
1 <= positioni, speedi <= 10^6
positioni < positioni+1

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/car-fleet-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

类似题目:LeetCode 853. 车队(排序)

class Solution {public:vector<double> getCollisionTimes(vector<vector<int>>& cars) {int n = cars.size();vector<double> ans(n, -1.0);stack<int> s;for(int i = n-1; i >= 0; i--) {while(!s.empty() && (cars[s.top()][1] >= cars[i][1] || (ans[s.top()] > 0 && delta(cars, i, s.top()) > ans[s.top()]))){   // 我的速度没有前车大,追不上前面的,检查再前面的人,前面可能有更慢的//前车 top 能撞上别人 且 撞上别人的时间 小于 我撞上top的时间,那我应该去跟更前面的人计算// 因为前车 top 已经先于我 撞上更前面的s.pop();}if(!s.empty())ans[i] = delta(cars, i, s.top());s.push(i);}return ans;}double delta(vector<vector<int>>& cars, int i, int j)//j 位置远,速度慢{return (cars[j][0] - cars[i][0])/double(cars[i][1] - cars[j][1]);}
};

572 ms 122.8 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 1776. 车队 II(单调栈)相关推荐

  1. 解题记录 LeetCode 下一个更大元素 II 单调栈

    题目链接: https://leetcode-cn.com/problems/next-greater-element-ii/ 题意: 给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素), ...

  2. leetcode 739. 每日温度 单调栈解法和暴力法及其优化 c代码

    如题: 根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数.如果之后都不会升高, 请在该位置用 0 来代替.例如,给定一个列表 temperature ...

  3. 使用单调栈解决接雨水问题——LeetCode 42 接雨水+单调栈说明

    题目内容 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 示例 1: 输入:height = [0,1,0,2,1,0,1,3,2,1,2,1] 输 ...

  4. leetcode 42 接雨水 单调栈

    接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下 ...

  5. leetcode 496, 503, 556. Next Greater Element I, II, III | 496, 503, 556. 下一个更大元素 I,II,III(单调栈)

    496. Next Greater Element I https://leetcode.com/problems/next-greater-element-i/ 单调栈问题,参考:https://l ...

  6. 单调栈 leetcode整理(二)

    目录 为什么单调栈的时间复杂度是O(n) 496. 下一个更大元素 I 方法一:暴力 方法二:单调栈+哈希表 739. 每日温度 单调栈模版解 优化 503. 下一个更大元素 II 单调栈+循环遍历 ...

  7. LeetCode 853. 车队(排序)

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

  8. 牛客 小米校招 计算题 单调栈 接雨水

    给定n个非负整数表示每个宽度为1的柱子的高度题,计算按此排列的柱子,下雨之后能接多少雨水. 经典的题目 leetcode 42 接雨水 单调栈 保持栈内单调递减 每次把一个矮的出栈都能够加上一大块面积 ...

  9. 数据结构与算法:单调栈(monotonic stack)

    文章目录 背景 小窍门 LeftBigger 例子 代码 LeftSmaller 例子 代码 RightBigger 例子 代码 RightSmaller 例子 代码 测试 LeetCode题目 背景 ...

最新文章

  1. sklearn.inspection.permutation_importance 衡量特征重要性的方法比随机森林自带的rf.feature_importance 如何
  2. 什么是薪火相传,民族复兴接力运动员
  3. 【转】C# DateTime 日期计算
  4. react脚手架 显示npm不知内部命令_第一章 React开发环境搭建
  5. paip.提升效率---模块化设计方法V2012.9.15
  6. lame库(iOS 和 Android)
  7. 反垃圾邮件企业邮箱设置(TXT记录)
  8. (软考中级--信息安全工程师)四、网络安全体系与网络安全模型
  9. 苹果笔的代替笔有哪些?Ipad好用电容笔测评
  10. tf.constant学习
  11. LINUX系统文件指令操作
  12. app安装路径和权限规范以及androd 如何使得升级更加容易
  13. 关于使用mysqlworkbench实现远程连接数据库
  14. U3D客户端框架之类对象池技术优化C#语言GC
  15. Ubuntu18.04解决蓝牙耳机无法连接问题
  16. Delta Lake 学习笔记(一)
  17. 用风格迁移搞事情!超越艺术字:卷积神经网络打造最美汉字
  18. ZoneAlarm发布新的升级版
  19. 干货|破解遗传算法——CryptoPups旺财,基于以太坊的区块链游戏(分享实录)
  20. java实现串的反转

热门文章

  1. ubuntu系统下Java环境JDK的安装
  2. 【解决】jupyter在deepin安装上的坑
  3. 大数据之Spark集群安装及简单使用
  4. Kinect深度图与摄像头RGB的标定与配准(转载文章)
  5. DataReceivedEventHandler 委托 接收调用执行进程返回数据
  6. 静态成员变量和非静态成员变量的对比
  7. mupdf不支持x64_Delphi xe2使用x64编译器编译ASM代码时出错 . 不支持的语言功能:'ASM'...
  8. [原创]K8 cping 3.0大型内网渗透扫描工具
  9. 解决python中遇到的乱码问题
  10. 将MYSQL查询导出到文件