力扣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;
    }
};
相关推荐
沐怡旸几秒前
【算法--链表】138.随机链表的复制--通俗讲解
算法·面试
anlogic7 分钟前
Java基础 9.10
java·开发语言·算法
薛定谔的算法9 分钟前
JavaScript单链表实现详解:从基础到实践
数据结构·算法·leetcode
CoovallyAIHub18 分钟前
CostFilter-AD:用“匹配代价过滤”刷新工业质检异常检测新高度! (附论文和源码)
深度学习·算法·计算机视觉
幻奏岚音19 分钟前
《数据库系统概论》第一章 初识数据库
数据库·算法·oracle
你好,我叫C小白20 分钟前
贪心算法(最优装载问题)
算法·贪心算法·最优装载问题
CoovallyAIHub26 分钟前
CVPR 2025 | 频率动态卷积(FDConv):以固定参数预算实现频率域自适应,显著提升视觉任务性能
深度学习·算法·计算机视觉
mit6.82430 分钟前
[rStar] 解决方案节点 | `BaseNode` | `MCTSNode`
人工智能·python·算法
晴空闲雲2 小时前
数据结构与算法-树和二叉树-二叉树的存储结构(Binary Tree)
数据结构·算法
索迪迈科技3 小时前
Flink Task线程处理模型:Mailbox
java·大数据·开发语言·数据结构·算法·flink