当前位置:网站首页>2022.7.2-----leetcode.871

2022.7.2-----leetcode.871

2022-07-04 05:53:00 路Lu727

  public int minRefuelStops(int target, int startFuel, int[][] stations) {
        //某次路程可以选择的油量
        PriorityQueue<Integer> pq = new PriorityQueue<Integer>((a, b) -> b - a);
        int ans = 0,end = startFuel;//某次路程的最大距离
        int n = stations.length;
        for (int i = 0; i < n; i++) {
            if(end>=target) return ans;//某次路程可以到达终点则返回
            //到达最大距离后,选择最大的油量,直到足够到达下一站点,开始下一次路程
            if(stations[i][0]>end){
               while(!pq.isEmpty()) {
                end+=pq.poll();
                ans++;
                if(end>=stations[i][0]) break;
               }
               if(end<stations[i][0]) return -1;//不能到达下一个站点  
            } 
            pq.add(stations[i][1]);//添加可到达站点的油量
        }
        //经过所有站点后,判断能否到达终点
        if(end<target){
            while(!pq.isEmpty()) {
                end+=pq.poll();
                ans++;
                if(end>=target) return ans;
            }
            return -1;
        }
        return ans;
    }

原网站

版权声明
本文为[路Lu727]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_60466670/article/details/125582738