LintCode領(lǐng)扣 題解 |Microsoft 面試題:Gas Station ii

題目描述

一輛汽車(chē)在一條筆直的道路上行駛运翼,一開(kāi)始有original單位的汽油屯换。這條筆直的道路上有n個(gè)加油站薯嗤,第i個(gè)加油站距離汽車(chē)出發(fā)位置的距離為distance[i]單位距離栏尚,可以給汽車(chē)加apply[i]單位汽油归苍。汽車(chē)每行駛1單位距離會(huì)消耗1單位的汽油宠默,假設(shè)汽車(chē)的油箱可以裝無(wú)限多的汽油麸恍。目的地距離汽車(chē)出發(fā)位置的距離為target,請(qǐng)問(wèn)汽車(chē)能否到達(dá)目的地搀矫,如果可以返回最少的加油次數(shù)抹沪,否則返回-1

思路點(diǎn)撥

考慮貪心瓤球,每次都用能到達(dá)并且能加最多油的加油站加油融欧。

考點(diǎn)分析

本題考察了用優(yōu)先隊(duì)列來(lái)貪心的思想。對(duì)于汽車(chē)能到達(dá)的加油站冰垄,顯然采用能提供油最多的加油站加油蹬癌,這樣才能保證到達(dá)目的地后加油次數(shù)最少,這個(gè)貪心的思想很有特色很值得借鑒虹茶。

參考程序

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

/**
* 本參考程序來(lái)自九章算法逝薪,由 @華助教 提供。版權(quán)所有蝴罪,轉(zhuǎn)發(fā)請(qǐng)注明出處董济。
* - 九章算法致力于幫助更多中國(guó)人找到好的工作,教師團(tuán)隊(duì)均來(lái)自硅谷和國(guó)內(nèi)的一線(xiàn)大公司在職工程師要门。
* - 現(xiàn)有的面試培訓(xùn)課程包括:九章算法班虏肾,系統(tǒng)設(shè)計(jì)班廓啊,算法強(qiáng)化班,Java入門(mén)與基礎(chǔ)算法班封豪,Android 項(xiàng)目實(shí)戰(zhàn)班谴轮,
* - Big Data 項(xiàng)目實(shí)戰(zhàn)班,算法面試高頻題班, 動(dòng)態(tài)規(guī)劃專(zhuān)題班
* - 更多詳情請(qǐng)見(jiàn)官方網(wǎng)站: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;
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末吹埠,一起剝皮案震驚了整個(gè)濱河市第步,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌缘琅,老刑警劉巖粘都,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異刷袍,居然都是意外死亡翩隧,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)呻纹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)堆生,“玉大人,你說(shuō)我怎么就攤上這事居暖⊥缙担” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵太闺,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我嘁圈,道長(zhǎng)省骂,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任最住,我火速辦了婚禮钞澳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘涨缚。我一直安慰自己轧粟,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布脓魏。 她就那樣靜靜地躺著兰吟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪茂翔。 梳的紋絲不亂的頭發(fā)上混蔼,一...
    開(kāi)封第一講書(shū)人閱讀 51,590評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音珊燎,去河邊找鬼惭嚣。 笑死遵湖,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的晚吞。 我是一名探鬼主播延旧,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼槽地!你這毒婦竟也來(lái)了迁沫?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤闷盔,失蹤者是張志新(化名)和其女友劉穎弯洗,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體逢勾,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡牡整,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了溺拱。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逃贝。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖迫摔,靈堂內(nèi)的尸體忽然破棺而出沐扳,到底是詐尸還是另有隱情,我是刑警寧澤句占,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布沪摄,位于F島的核電站,受9級(jí)特大地震影響纱烘,放射性物質(zhì)發(fā)生泄漏杨拐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一擂啥、第九天 我趴在偏房一處隱蔽的房頂上張望哄陶。 院中可真熱鬧,春花似錦哺壶、人聲如沸屋吨。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)至扰。三九已至,卻和暖如春塌碌,著一層夾襖步出監(jiān)牢的瞬間渊胸,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工台妆, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留翎猛,地道東北人胖翰。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像切厘,于是被迫代替她去往敵國(guó)和親萨咳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 專(zhuān)業(yè)考題類(lèi)型管理運(yùn)行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項(xiàng)A選項(xiàng)B選項(xiàng)C選項(xiàng)D選項(xiàng)E選項(xiàng)F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚(yú)閱讀 8,994評(píng)論 0 13
  • 本題考察的是最大子序列和 題目描述 在一條環(huán)路上有 N 個(gè)加油站疫稿,其中第 i 個(gè)加油站有汽油 gas[i] 升培他。你...
    小怪獸大作戰(zhàn)閱讀 1,983評(píng)論 0 1
  • 形態(tài)與質(zhì)感在小魔靜的線(xiàn)條中得到了恰如其份的表達(dá)。這種藝術(shù)的精準(zhǔn)難得可貴遗座,喜歡小魔靜的線(xiàn)條
    胡尼克閱讀 227評(píng)論 2 2
  • 小孩子:媽媽?zhuān)怂懒藭?huì)去天堂嗎舀凛? 媽媽:天堂是一種想像,誰(shuí)也不知道天堂什么樣子途蒋。 小孩子:那人死了是不是什么都沒(méi)有...
    rainchxy閱讀 172評(píng)論 0 1