LintCode领扣 题解 |Microsoft 面试题:Gas Station ii

题目描述

一辆汽车在一条笔直的道路上行驶,一开始有original单位的汽油。这条笔直的道路上有n个加油站,第i个加油站距离汽车出发位置的距离为distance[i]单位距离,可以给汽车加apply[i]单位汽油。汽车每行驶1单位距离会消耗1单位的汽油,假设汽车的油箱可以装无限多的汽油。目的地距离汽车出发位置的距离为target,请问汽车能否到达目的地,如果可以返回最少的加油次数,否则返回-1

思路点拨

考虑贪心,每次都用能到达并且能加最多油的加油站加油。

考点分析

本题考察了用优先队列来贪心的思想。对于汽车能到达的加油站,显然采用能提供油最多的加油站加油,这样才能保证到达目的地后加油次数最少,这个贪心的思想很有特色很值得借鉴。

参考程序

http://www.jiuzhang.com/solution/gas-station-ii/

/**
* 本参考程序来自九章算法,由 @华助教 提供。版权所有,转发请注明出处。
* - 九章算法致力于帮助更多中国人找到好的工作,教师团队均来自硅谷和国内的一线大公司在职工程师。
* - 现有的面试培训课程包括:九章算法班,系统设计班,算法强化班,Java入门与基础算法班,Android 项目实战班,
* - Big Data 项目实战班,算法面试高频题班, 动态规划专题班
* - 更多详情请见官方网站:http://www.jiuzhang.com/?source=code
*/ 

public class Solution {
    /**
     * @param target: The target distance
     * @param original: The original gas
     * @param distance: The distance array
     * @param apply: The apply array
     * @return: Return the minimum times
     */
    class Station {
        public int d;
        public int gas;
        public Station(int d, int gas) {
            this.d = d;
            this.gas = gas;
        }
    }

    public static Comparator<Station> gasComparator = new Comparator<Station>(){
        public int compare(Station a, Station b) {
            return b.gas - a.gas;
        }
    };
    public static Comparator<Station> dComparator = new Comparator<Station>(){
        public int compare(Station a, Station b) {
            return a.d - b.d;
        }
    };

    public int getTimes(int target, int original, int[] distance, int[] apply) {
        // Write your code here
        Queue<Station> q = new PriorityQueue<Station>(distance.length, gasComparator);
        Station[] s = new Station[distance.length];
        for(int i = 0; i < distance.length; i++) {
            s[i] = new Station(distance[i], apply[i]);
        }
        Arrays.sort(s, dComparator);
        int ans = 0;
        int i = 0;
        while(original < target && i < distance.length) {
            while(i < distance.length && original >= s[i].d) {
                q.offer(s[i]);
                i++;
            }
            Station now = q.poll();
            if(now == null) {
                break;
            }
            original += now.gas;
            ans++;
        }
        if(original >= target) {
            return ans;
        } else {
            return -1;
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 8,970评论 0 13
  • 本题考察的是最大子序列和 题目描述 在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你...
    小怪兽大作战阅读 1,961评论 0 1
  • 形态与质感在小魔静的线条中得到了恰如其份的表达。这种艺术的精准难得可贵,喜欢小魔静的线条
    胡尼克阅读 225评论 2 2
  • 熊猫唐飞阅读 528评论 0 49
  • 小孩子:妈妈,人死了会去天堂吗? 妈妈:天堂是一种想像,谁也不知道天堂什么样子。 小孩子:那人死了是不是什么都没有...
    rainchxy阅读 170评论 0 1