前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode 1776. 车队 II(单调栈)

LeetCode 1776. 车队 II(单调栈)

作者头像
Michael阿明
发布2021-09-06 10:04:43
3310
发布2021-09-06 10:04:43
举报
文章被收录于专栏:Michael阿明学习之路

文章目录

1. 题目

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

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

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

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

代码语言:javascript
复制
示例 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. 车队(排序)

代码语言:javascript
复制
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阿明),一起加油、一起学习进步!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/02/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 1. 题目
  • 2. 解题
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档