国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【力扣刷題 | 第十七天】

這篇具有很好參考價值的文章主要介紹了【力扣刷題 | 第十七天】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【力扣刷題 | 第十七天】,【力扣刷題】,leetcode,算法,職場和發(fā)展

目錄

前言:

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

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

總結(jié):


前言:

????????今天兩道類型都是貪心算法,希望可以有所收獲

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

給定一個非負整數(shù)數(shù)組?nums?,你最初位于數(shù)組的?第一個下標(biāo)?。

數(shù)組中的每個元素代表你在該位置可以跳躍的最大長度。

判斷你是否能夠到達最后一個下標(biāo)。

【力扣刷題 | 第十七天】,【力扣刷題】,leetcode,算法,職場和發(fā)展

其實這道題注重的是思想,很多人把這道題當(dāng)作貪心算法思路去做,但是都陷入了一個思維陷阱:

我在當(dāng)前位置如何選擇下一步,使其最后能夠到達目的點。

但是如果這樣想,就會陷入很難的一個解題思路,就是如何選取下一步怎么走,因為有的時候貪的步數(shù)多反而無法到達重點。

因此我們不要糾結(jié)于到底應(yīng)該怎么走,而是看覆蓋范圍,我用實例給大家舉例子:

【力扣刷題 | 第十七天】,【力扣刷題】,leetcode,算法,職場和發(fā)展

?我們可以用橫線表示覆蓋范圍:
【力扣刷題 | 第十七天】,【力扣刷題】,leetcode,算法,職場和發(fā)展

?可以清楚的看到3已經(jīng)覆蓋了4,那么我們就可以知道在這個數(shù)組中,我們是可以走到最后一個點的。

我們再舉一個反例:
【力扣刷題 | 第十七天】,【力扣刷題】,leetcode,算法,職場和發(fā)展

?我們就可以看到這個數(shù)組的元素(不包括最后一個元素)是無法覆蓋到最后一個點的,那么無論我們怎么走也不可能到達最后一個點。

因此這道題我們根據(jù)這種思想,可以寫出解法:

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

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

給定一個長度為 n 的 0 索引整數(shù)數(shù)組 nums。初始位置為 nums[0]。

每個元素 nums[i] 表示從索引 i 向前跳轉(zhuǎn)的最大長度。換句話說,如果你在 nums[i] 處,你可以跳轉(zhuǎn)到任意 nums[i + j] 處:

0 <= j <= nums[i]?
i + j < n
返回到達?nums[n - 1] 的最小跳躍次數(shù)。生成的測試用例可以到達 nums[n - 1]。

【力扣刷題 | 第十七天】,【力扣刷題】,leetcode,算法,職場和發(fā)展

?這道題也是貪心算法思路,但是很多人貪心的目的錯了,上道題中我們引入了覆蓋范圍,那么實際上在最小跳躍次數(shù)的前提下我們貪的不是最多的步數(shù),而是最大的覆蓋范圍。

根據(jù)這個解題思想,我們可以得出:

class Solution {
public:
    int jump(vector<int>& nums) {
        int size =nums.size();
        int cur=0;
        int next=0;
        int count=0;
        if(size==1)
        {
            return 0;
        }

        for(int i=0;i<size;i++)
        {
            next=max(i+nums[i],next);
            if(i==cur)
            {
                if(cur!=size-1)
                {
                    count++;
                    cur=next;
                }
                if(cur>=size-1)
                {
                    break;
                }
            }
        }
        return count;
    }
    
};

我來做一下詳細的解釋:先建立四個變量:size? 表示到達目的點所需長度,cur? 表示當(dāng)前所在點的覆蓋范圍,next? 表示我們將要跳到的點的覆蓋范圍,count? 記錄跳躍次數(shù)。

此后基于當(dāng)前位置的覆蓋范圍,我們向后尋找下一個最大的覆蓋范圍,這也就是for語句里面三個if的作用

  • if(i==cur)用來判斷我們的是否已經(jīng)判斷完當(dāng)前覆蓋范圍內(nèi)的下一個最大覆蓋范圍。
  • if(cur!=size-1)用來判斷是否當(dāng)前覆蓋范圍未覆蓋到目的點,如果不等于就是沒覆蓋,如果沒覆蓋,我們就要走到下一個最大覆蓋點處(cur=next),并且給跳躍次數(shù)+1(count++)
  • if(cur>=size-1)用來判斷是否當(dāng)前覆蓋范圍已經(jīng)覆蓋到目的點,如果已經(jīng)覆蓋,則說明此時的跳躍步數(shù)就已經(jīng)是最短跳躍步數(shù),直接退出循環(huán),輸出結(jié)果。

總結(jié):

貪心算法的題目萬變不離其宗,我們還是要通過大量的刷題掌握更多的貪心算法思路。

如果我的內(nèi)容對你有幫助,請點贊,評論,收藏。創(chuàng)作不易,大家的支持就是我堅持下去的動力!

【力扣刷題 | 第十七天】,【力扣刷題】,leetcode,算法,職場和發(fā)展

?文章來源地址http://www.zghlxwxcb.cn/news/detail-553936.html

?

到了這里,關(guān)于【力扣刷題 | 第十七天】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【力扣刷題 | 第十五天】

    【力扣刷題 | 第十五天】

    目錄 前言: ????????63. 不同路徑 II - 力扣(LeetCode) 343. 整數(shù)拆分 - 力扣(LeetCode) 總結(jié): ? ? ? ? 本篇我們主要刷動態(tài)規(guī)劃的題,解題還是嚴(yán)格按照我們在【夜深人靜寫算法】欄目下的解題步驟,大家如果沒學(xué)過動態(tài)規(guī)劃的可以先看看我寫的動態(tài)規(guī)劃文章介紹。

    2024年02月15日
    瀏覽(27)
  • 【leetcode 力扣刷題】匯總區(qū)間//合并區(qū)間//插入?yún)^(qū)間

    【leetcode 力扣刷題】匯總區(qū)間//合并區(qū)間//插入?yún)^(qū)間

    題目鏈接:228.匯總區(qū)間 題目內(nèi)容: 看題目真是沒懂這個題到底是要干啥……實際上題目要求的 恰好覆蓋數(shù)組中所有數(shù)字 的 最小有序 區(qū)間范圍列表,這個最小是指一個區(qū)間范圍小。比如能夠覆蓋{2,3,4,6}的區(qū)間可以是[2,6],但是5在區(qū)間內(nèi),卻不在數(shù)組內(nèi),因此這個區(qū)間不是最

    2024年02月10日
    瀏覽(33)
  • leetcode 力扣刷題 旋轉(zhuǎn)矩陣(循環(huán)過程邊界控制)

    leetcode 力扣刷題 旋轉(zhuǎn)矩陣(循環(huán)過程邊界控制)

    下面的題目的主要考察點都是,二維數(shù)組從左上角開始順時針(或者逆時針)按圈遍歷數(shù)組的過程。順時針按圈遍歷的過程如下: 對于每一圈,分為四條邊 ,循環(huán)遍歷就好。這時,對于 四個角 的元素的處理,可以將四條邊的遍歷分為以下兩種情況: 第一種:每條邊都從對

    2024年02月12日
    瀏覽(21)
  • 【leetcode 力扣刷題】移除鏈表元素 多種解法

    【leetcode 力扣刷題】移除鏈表元素 多種解法

    題目鏈接:203.移除鏈表元素 題目內(nèi)容: 理解題意:就是單純的刪除鏈表中所有值等于給定的val的節(jié)點。上一篇博客中介紹了鏈表的基礎(chǔ)操作,在刪除鏈表中節(jié)點時,需要注意的是頭節(jié)點: 如果沒有虛擬頭節(jié)點,那么對頭節(jié)點的刪除需要做不同的處理,head = head-next; 如果有

    2024年02月12日
    瀏覽(25)
  • 【leetcode 力扣刷題】鏈表基礎(chǔ)知識 基礎(chǔ)操作

    【leetcode 力扣刷題】鏈表基礎(chǔ)知識 基礎(chǔ)操作

    在數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)過程中,我們知道線性表【一種數(shù)據(jù)組織、在內(nèi)存中存儲的形式】是線性結(jié)構(gòu)的,其中線性表包括順序表和鏈表。數(shù)組就是順序表,其各個元素在內(nèi)存中是連續(xù)存儲的。 鏈表則是由 數(shù)據(jù)域 和 指針域 組成的 結(jié)構(gòu)體 構(gòu)成的,數(shù)據(jù)域是一個節(jié)點的數(shù)據(jù),指針域

    2024年02月12日
    瀏覽(22)
  • 【leetcode 力扣刷題】回文串相關(guān)題目(KMP、動態(tài)規(guī)劃)

    【leetcode 力扣刷題】回文串相關(guān)題目(KMP、動態(tài)規(guī)劃)

    題目鏈接:5. 最長回文子串 題目內(nèi)容: 題目就是要我們找s中的回文子串,還要是最長的。其實想想,暴力求解也行……就是遍歷所有的子串,同時判斷是不是回文串,是的話再和記錄的最大長度maxlen比較,如果更長就更新。時間復(fù)雜度直接變成O(n^3)。 優(yōu)化的點在于,假設(shè)子

    2024年02月09日
    瀏覽(27)
  • 【leetcode 力扣刷題】字符串匹配之經(jīng)典的KMP?。?!

    【leetcode 力扣刷題】字符串匹配之經(jīng)典的KMP?。?!

    以下是能用KMP求解的算法題,KMP是用于字符串匹配的經(jīng)典算法【至今沒學(xué)懂………啊啊啊】 題目鏈接:28. 找出字符串中第一個匹配項的下標(biāo) 題目內(nèi)容: 題意還是很好理解的,要在字符串haystack中查找一個完整的needle,即字符串匹配。 暴力求解就是用 兩層循環(huán) :haystack從第

    2024年02月09日
    瀏覽(33)
  • 【leetcode 力扣刷題】字符串翻轉(zhuǎn)合集(全部反轉(zhuǎn)///部分反轉(zhuǎn))

    【leetcode 力扣刷題】字符串翻轉(zhuǎn)合集(全部反轉(zhuǎn)///部分反轉(zhuǎn))

    題目鏈接:344. 反轉(zhuǎn)字符串 題目內(nèi)容: 題目中重點強調(diào)了必須 原地修改 輸入數(shù)組,即不能新建一個數(shù)組來完成字符串的反轉(zhuǎn)。我們注意到: 原來下標(biāo)為0的,反轉(zhuǎn)后是size - 1【原來下標(biāo)是size - 1的,反轉(zhuǎn)后是0】; 原來下標(biāo)是1的,反轉(zhuǎn)后是size - 2【原來下標(biāo)是size -2的,反轉(zhuǎn)后

    2024年02月11日
    瀏覽(33)
  • 算法第十七天-構(gòu)造有效字符串的最少插入數(shù)

    算法第十七天-構(gòu)造有效字符串的最少插入數(shù)

    考慮abc的個數(shù) 假設(shè)答案有n個\\\"abc\\\"組成,那么需要插入的字符個數(shù)為 3 ? n ? l e n ( s ) 3*n - len(s) 3 ? n ? l e n ( s ) 。 對于相鄰的兩個字符x和y(x在y左側(cè)): 如果 x y xy x y ,那么x和y可以在同一個\\\"abc\\\"內(nèi),否則一定不在; 如果 x ≥ y xge y x ≥ y ,那么x和y一定不可以在同一個

    2024年01月17日
    瀏覽(21)
  • 力扣刷題-動態(tài)規(guī)劃算法3:完全背包問題

    力扣刷題-動態(tài)規(guī)劃算法3:完全背包問題

    問題描述: 1)有N件物品和一個最多能背重量為W的背包。第i件物品的重量是weight[i],得到的價值是value[i] 。 2) 每件物品都有無限個(也就是可以放入背包多次) (比0-1背包多出的條件) 3) 求解將哪些物品裝入背包里物品價值總和最大。 求解步驟: 1)首先遍歷物品,然

    2023年04月13日
    瀏覽(136)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包