力扣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;
    }
};
相关推荐
Neil今天也要学习16 分钟前
永磁同步电机无速度算法--基于三阶LESO的反电动势观测器
算法·1024程序员节
机器学习之心25 分钟前
NGO-VMD北方苍鹰算法优化变分模态分解+皮尔逊系数+小波阈值降噪+信号重构,MATLAB代码
算法·matlab·重构·信号重构·ngo-vmd·皮尔逊系数·小波阈值降噪
橘颂TA29 分钟前
【剑斩OFFER】算法的暴力美学——山脉数组的蜂顶索引
算法·leetcode·职场和发展·c/c++
速易达网络41 分钟前
C语言常见推理题
java·c语言·算法
freedom_1024_1 小时前
LRU缓存淘汰算法详解与C++实现
c++·算法·缓存
博语小屋1 小时前
力扣11.盛水最多的容器(medium)
算法·leetcode·职场和发展
Swift社区1 小时前
LeetCode 423 - 从英文中重建数字
算法·leetcode·职场和发展
点云SLAM2 小时前
算法与数据结构之二叉树(Binary Tree)
数据结构·算法·二叉树·深度优先·广度优先·宽度优先
小龙报2 小时前
《算法通关指南:算法基础篇 --- 一维前缀和 — 1. 【模板】一维前缀和,2.最大子段和》
c语言·数据结构·c++·算法·职场和发展·创业创新·visual studio
程序员三藏2 小时前
一文了解UI自动化测试
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例