力扣 : 871. 最低加油次数

871. 最低加油次数 - 力扣(LeetCode)

每次用优先队列保存每个加油站可以加的油 , 如果达不到下一个加油站或终点站时,就拿一个最大的加油 (保证答案次数最少,越大开的越远嘛)

注意随时判断对否到达了终点站!

cpp 复制代码
class Solution {
public:
    int minRefuelStops(int target, int startFuel, vector<vector<int>>& stations) {

        if(startFuel >= target)return 0;

        int ans=0;
        priority_queue<int> pq;  //放已经走过的加油站可以加的油

        for(auto i:stations)
        {
            if(i[0] > startFuel)
            {
                while(!pq.empty() && startFuel < i[0])
                {
                    startFuel += pq.top();
                    pq.pop();
                    ans++;
                    if(startFuel >= target)return ans;
                }

                if(startFuel < i[0])
                return -1;
            }

            pq.push(i[1]);

        }

        while(!pq.empty() && startFuel < target)
        {
            startFuel += pq.top();
            pq.pop();
            ans++;
            if(startFuel >= target)return ans;
        }

        if(startFuel < target)return -1;

        return ans;
    }
};
相关推荐
玉树临风江流儿1 小时前
C++左值、右值、move移动函数
开发语言·c++
王哈哈^_^1 小时前
YOLOv11视觉检测实战:安全距离测算全解析
人工智能·数码相机·算法·yolo·计算机视觉·目标跟踪·视觉检测
..Cherry..1 小时前
Etcd详解(raft算法保证强一致性)
数据库·算法·etcd
商汤万象开发者1 小时前
LazyLLM教程 | 第13讲:RAG+多模态:图片、表格通吃的问答系统
人工智能·科技·算法·开源·多模态
Lee_yayayayaya2 小时前
本原多项式产生m序列的原理
算法
许长安2 小时前
c/c++ static关键字详解
c语言·c++·经验分享·笔记
Murphy_lx2 小时前
C++ thread类
开发语言·c++
月夜的风吹雨2 小时前
【C++ STL 深度剖析】:vector 底层模拟实现与核心陷阱解析
c++·vector·类和对象·visual studio
彩妙不是菜喵2 小时前
C++ 中 nullptr 的使用与实践:从陷阱到最佳实践
开发语言·jvm·c++
蒙奇D索大2 小时前
【算法】递归的艺术:从本质思想到递归树,深入剖析算法的性能权衡
经验分享·笔记·算法·改行学it