LeetCode刷題之貪心算法

貪心算法(又稱貪婪算法)是指,在對(duì)問題求解時(shí)意乓,總是做出在當(dāng)前看來是最好的選擇烫罩。也就是說惜傲,不從整體最優(yōu)上加以考慮,他所做出的是在某種意義上的局部最優(yōu)解贝攒。

貪心算法不是對(duì)所有問題都能得到整體最優(yōu)解盗誊,關(guān)鍵是貪心策略的選擇,選擇的貪心策略必須具備無后效性隘弊,即某個(gè)狀態(tài)以前的過程不會(huì)影響以后的狀態(tài)哈踱,只與當(dāng)前狀態(tài)有關(guān)。

貪心算法基本思路
  • 建立數(shù)學(xué)模型來描述問題
  • 把求解的問題分成若干個(gè)子問題
  • 對(duì)每個(gè)子問題求解梨熙,得到子問題的局部最優(yōu)解
  • 把子問題的解局部最優(yōu)解合成原來問題的一個(gè)解

各題題解:

//            ###### [買賣股票的最佳時(shí)機(jī)](https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/)
    public int maxProfit(int[] prices) {
        //思路:遍歷一遍嚣鄙,記錄一個(gè)最小值,如果當(dāng)前不是最小值串结,那么與最小值做差哑子,假定在這天賣舅列,記錄一個(gè)最大利潤
        int minPrice = prices[0];
        int maxProfit = 0;
        for (int i=1;i<prices.length;i++) {
            if (prices[i] < minPrice) {
                minPrice = prices[i];
            } else {
                //那么假如在這天賣,記錄當(dāng)前的差價(jià)
                maxProfit = Math.max(prices[i]-minPrice, maxProfit);
            }
        }
        return maxProfit;
    }

//            ###### [買賣股票的最佳時(shí)機(jī) II](https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/)
    /**
     * 只要有漲幅區(qū)間卧蜓,都要吃掉股價(jià)漲幅
     */
    public int maxProfit2(int[] prices) {
        int profit = 0;
        for(int i=prices.length-1;i>0;i--) {
            int dif = prices[i] - prices[i-1];
            if(dif > 0) {
                //只要后一天股價(jià)比前一天高帐要,都要累計(jì)收益
                profit += dif;
            }
        }
        return profit;
    }

    //            ###### [跳躍游戲](https://leetcode.cn/problems/jump-game/)

    /**
     * 思路:貪心算法
     * 只要存在一個(gè)位置x,它本身可以到達(dá)弥奸,并且它跳躍的最大長度為 x+nums[x]榨惠,這個(gè)值大于等于y,即 x+nums[x]≥y盛霎,那么位置 y 也可以到達(dá)赠橙。
     * 這樣以來,我們依次遍歷數(shù)組中的每一個(gè)位置愤炸,并實(shí)時(shí)維護(hù) 最遠(yuǎn)可以到達(dá)的位置期揪,如果 最遠(yuǎn)可以到達(dá)的位置 大于等于數(shù)組中的最后一個(gè)位置,就return true
     */
    public boolean canJump(int[] nums) {
        int n= nums.length;
        int rightmost = 0; //定義當(dāng)次跳躍范圍能走的最遠(yuǎn)位置
        for (int i=0;i<n;i++) {
            if (i<=rightmost) {
                //在當(dāng)次遍歷的最遠(yuǎn)范圍內(nèi)查找规个,看i位置能走的最遠(yuǎn)位置i+nums[i]能否刷新rightmost
                rightmost = Math.max(rightmost, i+nums[i]);
                if (rightmost >= n-1) {
                    return true;
                }
            }
        }
        return false;
    }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末凤薛,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子诞仓,更是在濱河造成了極大的恐慌缤苫,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件墅拭,死亡現(xiàn)場(chǎng)離奇詭異活玲,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)谍婉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門翼虫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人屡萤,你說我怎么就攤上這事珍剑。” “怎么了死陆?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵招拙,是天一觀的道長。 經(jīng)常有香客問我措译,道長别凤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任领虹,我火速辦了婚禮规哪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘塌衰。我一直安慰自己诉稍,他們只是感情好蝠嘉,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著杯巨,像睡著了一般蚤告。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上服爷,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天杜恰,我揣著相機(jī)與錄音,去河邊找鬼仍源。 笑死心褐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的笼踩。 我是一名探鬼主播逗爹,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼戳表!你這毒婦竟也來了桶至?” 一聲冷哼從身側(cè)響起昼伴,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤匾旭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后圃郊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體价涝,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年持舆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了色瘩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡逸寓,死狀恐怖居兆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情竹伸,我是刑警寧澤泥栖,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站勋篓,受9級(jí)特大地震影響吧享,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜譬嚣,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一钢颂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拜银,春花似錦殊鞭、人聲如沸遭垛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽耻卡。三九已至,卻和暖如春牲尺,著一層夾襖步出監(jiān)牢的瞬間卵酪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國打工谤碳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留溃卡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓蜒简,卻偏偏與公主長得像瘸羡,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子搓茬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

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

  • [toc] LeetCode.1 兩數(shù)之和 給定一個(gè)整數(shù)數(shù)組 nums 和一個(gè)目標(biāo)值 target犹赖,請(qǐng)你在該數(shù)組中...
    tylorsenna閱讀 177評(píng)論 0 0
  • 根據(jù)身高重建隊(duì)列 假設(shè)有打亂順序的一群人站成一個(gè)隊(duì)列峻村。 每個(gè)人由一個(gè)整數(shù)對(duì)(h, k)表示,其中h是這個(gè)人的身高锡凝,...
    我是小曼巴閱讀 255評(píng)論 0 0
  • 貪心算法粘昨,又稱貪婪算法。 1窜锯、在對(duì)問題求解時(shí)张肾,總是做出在當(dāng)前看來最好的選擇。即貪心算法不從整體最優(yōu)上加以考慮锚扎。 2...
    李威威閱讀 909評(píng)論 0 1
  • (Since 2020.10.14-2021.3.10) LeetCode刷題筆記吞瞪,共兩百多題,記錄整理如下: 動(dòng)...
    周恩國的學(xué)習(xí)筆記閱讀 722評(píng)論 0 1
  • 夜鶯2517閱讀 127,712評(píng)論 1 9