代碼隨想錄算法訓(xùn)練營打卡Day32 | LeetCode122 買賣股票的最佳時(shí)機(jī)冶匹、LeetCode55 跳躍游戲习劫、LeetCode45 跳躍游戲II

摘要

  • 今天的題目的共同點(diǎn)是從左到右遍歷數(shù)組中的元素,記錄會(huì)影響局部最優(yōu)的那個(gè)元素的信息嚼隘,從而影響到下一步的選擇诽里。
  • 和動(dòng)態(tài)規(guī)劃比起來,不需要記錄每個(gè)元素的信息飞蛹,只需要記錄會(huì)影響下一步的元素的信息即可谤狡。

LeetCode122 買賣股票的最佳時(shí)機(jī)

122. 買賣股票的最佳時(shí)機(jī) II - 力扣(Leetcode)

  • 每一步:根據(jù)prices[i - 1]prices[i]的大小關(guān)系,決定第i - 1天是否買入股票并在第i天出售桩皿。
  • 局部最優(yōu):prices[i - 1] < prices[i]豌汇,在第i天賣出股票有利潤幢炸。
  • 全局最優(yōu):得到的利潤最大泄隔。

完整題解代碼如下

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int profit = 0;
        if (prices.size() < 2) return profit;

        for (int i = 1; i < prices.size(); i++) {
            if (prices[i - 1] >= prices[i]) continue;
            else profit += prices[i] - prices[i - 1];
        }

        return profit;
    }
};

LeetCode55 跳躍游戲

55. 跳躍游戲 - 力扣(Leetcode)

  • 將每個(gè)點(diǎn)(即數(shù)組的每個(gè)元素)擴(kuò)展成對應(yīng)可以跳躍到的區(qū)間,都是向右跳宛徊,所以再對可以跳躍到的點(diǎn)做擴(kuò)展成可以跳躍到的區(qū)間的操作佛嬉。

  • 直到區(qū)間包括數(shù)組最后一位或者展開所有點(diǎn)都不能使區(qū)間包含數(shù)組最后一位。

  • 這題的貪心選擇策略闸天,簡單來說就是根據(jù)當(dāng)前能跳躍到的范圍從左到右暖呕,求每個(gè)位置能跳躍到的范圍,并根據(jù)當(dāng)前位置的范圍來更新能跳躍到的范圍苞氮。當(dāng)能跳躍到的范圍已經(jīng)包含最后一個(gè)下標(biāo)時(shí)湾揽,

class Solution {
public:
    bool canJump(vector<int>& nums) {
        int cover = 0;
        for (int i = 0; i <= cover; i++) {
            cover = max(i + nums[i], cover);
            if (cover >= nums.size() - 1) return true;
        }
        return false;
    }
};

LeetCode45 跳躍游戲II

45. 跳躍游戲 II - 力扣(Leetcode)

  • 和上一題的思路類似,也是將每個(gè)點(diǎn)展開成一個(gè)可以跳躍到的區(qū)間笼吟。
  • 和上一題不同的是库物,這題需要統(tǒng)計(jì)跳躍的步數(shù),所以不能每到一個(gè)位置都更新可以跳躍的到的區(qū)間贷帮。為了區(qū)分每一步跳躍戚揭,應(yīng)該保存當(dāng)前可以跳躍到的區(qū)間和下一步可以跳躍到的區(qū)間。實(shí)際上就記錄了每一步跳躍能到達(dá)的區(qū)間撵枢。
  • [2, 2, 1, 1, 4]為例
  • 第一步民晒,當(dāng)i = 0時(shí),計(jì)算出這一步可以跳躍到的區(qū)間為[0, 2]锄禽,所以當(dāng)i[0, 2]中移動(dòng)時(shí)潜必,都只算一步。并且沃但,當(dāng)i[0, 2]中移動(dòng)時(shí)刮便,要根據(jù)每個(gè)位置記錄下一步能到的最遠(yuǎn)距離。下一步的最遠(yuǎn)距離由i = 1i = 2時(shí)取到绽慈,都是最遠(yuǎn)到i = 3恨旱。
  • 第二步辈毯,當(dāng)i = 2時(shí),已經(jīng)到達(dá)了第一步最遠(yuǎn)能跳到的位置搜贤,要再往下跳的話谆沃,需要多跳一步,并更新可以跳躍到的區(qū)間為[2, 3]仪芒,下一步能到的最遠(yuǎn)位置是i = 4唁影。
  • 第三步, 當(dāng)i = 3掂名,到達(dá)了第二步能最遠(yuǎn)能跳到的位置据沈,要再往下跳,第三步能到達(dá)的最遠(yuǎn)位置是i = 4饺蔑。到達(dá)數(shù)組最后一位

題解代碼如下

class Solution {
public:
    int jump(vector<int>& nums) {
        int step = 0;
        int curCover = 0;
        int nextCover = 0;
        // 要注意循環(huán)終止的條件锌介,到達(dá)數(shù)組最后一位就不用再跳了,所以i最大是nums.size()-2
        // 如果i < nums.size()猾警,會(huì)多算一步孔祸,多算的一步就是在數(shù)組最后一位再往后跳
        for (int i = 0; i < nums.size() - 1; i++) {
            nextCover = max(i + nums[i], nextCover);
            if (i >= curCover) {
                curCover = nextCover;
                step++; 
            }
        }
        return step;
    }
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市发皿,隨后出現(xiàn)的幾起案子崔慧,更是在濱河造成了極大的恐慌,老刑警劉巖穴墅,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惶室,死亡現(xiàn)場離奇詭異,居然都是意外死亡玄货,警方通過查閱死者的電腦和手機(jī)皇钞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來誉结,“玉大人鹅士,你說我怎么就攤上這事〕涂樱” “怎么了掉盅?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長以舒。 經(jīng)常有香客問我趾痘,道長,這世上最難降的妖魔是什么蔓钟? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任永票,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘侣集。我一直安慰自己键俱,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布世分。 她就那樣靜靜地躺著编振,像睡著了一般。 火紅的嫁衣襯著肌膚如雪臭埋。 梳的紋絲不亂的頭發(fā)上踪央,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天,我揣著相機(jī)與錄音瓢阴,去河邊找鬼畅蹂。 笑死,一個(gè)胖子當(dāng)著我的面吹牛荣恐,可吹牛的內(nèi)容都是我干的液斜。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼募胃,長吁一口氣:“原來是場噩夢啊……” “哼旗唁!你這毒婦竟也來了畦浓?” 一聲冷哼從身側(cè)響起痹束,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎讶请,沒想到半個(gè)月后祷嘶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡夺溢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年论巍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片风响。...
    茶點(diǎn)故事閱讀 38,724評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嘉汰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出状勤,到底是詐尸還是另有隱情鞋怀,我是刑警寧澤,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布持搜,位于F島的核電站密似,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏葫盼。R本人自食惡果不足惜残腌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抛猫,春花似錦蟆盹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至掖看,卻和暖如春匣距,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背哎壳。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工毅待, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人归榕。 一個(gè)月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓尸红,卻偏偏與公主長得像,于是被迫代替她去往敵國和親刹泄。 傳聞我的和親對象是個(gè)殘疾皇子外里,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,627評論 2 350

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