力扣853.车队

力扣853.车队

题目解析及思路

题目要求求出到达终点时并排的车量 ,其中后车在追上前车时会降到同样的速度

可以看作一个数轴,每辆车的位置从大到小排序,如果前车被追上,后车的速度一定大于前车

即有(target - p1)/s1 < (target - p2)/s2,避免浮点数错误,转化成乘法计算

(long long)(target - p1) * s2 < (long long)(target - p2) * s1

  • 按照初始位置排序
    • 遍历每两辆车,如果满足后车追上前车
    • ans ++,同时更新速度为后车速度,继续判断

代码

cpp 复制代码
class Solution {
    typedef pair<int,int> PII;
public:
    int carFleet(int target, vector<int>& position, vector<int>& speed) {
        int n = position.size();
        vector<PII> v;
        for(int i=0;i<n;i++)    
            v.emplace_back(position[i],speed[i]);

        sort(v.begin(),v.end(),[](PII a,PII b){
            return a.first > b.first;
        });

        int ans = 1;
        int p1 = v[0].first,s1 = v[0].second;
        for(int i=1;i<n;i++)
        {
            int p2 = v[i].first,s2 = v[i].second;
            if((long long)(target - p1) * s2 < (long long)(target - p2) * s1)
            {
                ans ++;
                //不用管中间的变速过程,即使p1会减小,s1会增大,后车只与前面紧邻的那辆车比较
                p1 = p2;
                s1 = s2;
            }
        }
        return ans;
    }
};
相关推荐
FAFU_kyp3 分钟前
Rust 流程控制学习教程
学习·算法·rust
0和1的舞者11 分钟前
力扣hot100-链表专题-刷题笔记(二)
笔记·算法·leetcode·链表·职场和发展
曾几何时`18 分钟前
MySQL(四)表的约束
算法
gihigo199818 分钟前
竞争性自适应重加权算法
人工智能·算法·机器学习
明洞日记31 分钟前
【CUDA手册004】一个典型算子的 CUDA 化完整流程
c++·图像处理·算法·ai·图形渲染·gpu·cuda
金色光环34 分钟前
【SCPI学习】STM32与LWIP实现SCPI命令解析
stm32·嵌入式硬件·算法·scpi学习·scpi
豆沙沙包?42 分钟前
2026年--Lc342-841. 钥匙和房间(图 - 广度优先搜索)--java版
java·算法·宽度优先
Emilin Amy1 小时前
【C++】【STL算法】那些STL算法替代的循环
开发语言·c++·算法·ros1/2
Hcoco_me1 小时前
大模型面试题74:在使用GRPO训练LLM时,训练数据有什么要求?
人工智能·深度学习·算法·机器学习·chatgpt·机器人
天赐学c语言1 小时前
1.16 - 二叉树的中序遍历 && 动态多态的实现原理
数据结构·c++·算法·leecode