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

【力扣刷題 | 第二十四天】

這篇具有很好參考價(jià)值的文章主要介紹了【力扣刷題 | 第二十四天】。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

【力扣刷題 | 第二十四天】,【力扣刷題】,leetcode,算法,職場(chǎng)和發(fā)展

目錄

前言:

1049. 最后一塊石頭的重量 II - 力扣(LeetCode)

494. 目標(biāo)和 - 力扣(LeetCode)

總結(jié):


前言:

? ? ? ? ? ? ? ? ?今天我們依然暴打動(dòng)態(tài)規(guī)劃

1049. 最后一塊石頭的重量 II - 力扣(LeetCode)

有一堆石頭,用整數(shù)數(shù)組?stones 表示。其中?stones[i] 表示第 i 塊石頭的重量。

每一回合,從中選出任意兩塊石頭,然后將它們一起粉碎。假設(shè)石頭的重量分別為?x 和?y,且?x <= y。那么粉碎的可能結(jié)果如下:

如果?x == y,那么兩塊石頭都會(huì)被完全粉碎;
如果?x != y,那么重量為?x?的石頭將會(huì)完全粉碎,而重量為?y?的石頭新重量為?y-x。
最后,最多只會(huì)剩下一塊 石頭。返回此石頭 最小的可能重量 。如果沒(méi)有石頭剩下,就返回 0。

【力扣刷題 | 第二十四天】,【力扣刷題】,leetcode,算法,職場(chǎng)和發(fā)展

這個(gè)問(wèn)題其實(shí)很好想:我們?nèi)绾伟咽^盡可能的撞碎呢?

很簡(jiǎn)單,我們?cè)诖篌w上把這些石頭分成重量相似的兩堆,因?yàn)槿绻麅啥咽^的重量相似,那么相撞后就一定會(huì)得到最小的值。

因此從動(dòng)態(tài)分類的角度來(lái)講,我們可以把這道題理解為是? 一個(gè)重量為(sum/2)的背包,我們盡可能的裝背包,之后裝進(jìn)背包的是一堆石頭,未裝進(jìn)背包的是一堆石頭,那么這兩堆石頭相減,就可以得到最小的石頭重量。

那么我們就又把這道題轉(zhuǎn)化為了?裝與不裝的01背包問(wèn)題

其實(shí)這道題和我們前天做的分割等和子集是基本相同的,感興趣的朋友可以去看一下那道題

那么既然是動(dòng)態(tài)規(guī)劃問(wèn)題,我們就繼續(xù)進(jìn)行動(dòng)態(tài)規(guī)劃五部曲:

1.確定dp數(shù)組及其含義:dp[j]? 是背包含量為j的時(shí)候所背的最大價(jià)值(在這里我們重量就是價(jià)值,價(jià)值就是重量)

2.遞推公式? dp[j] = max(dp[j] , dp[ j - stones[i] ]+stones[i])

里層的減是減去容量,外面的加是加上價(jià)值,只不過(guò)是因?yàn)槲覀兊闹亓亢蛢r(jià)值是一樣的

3.確定初始化:全部初始化為0即可?

class Solution {
public:
    int lastStoneWeightII(vector<int>& stones) {
            int sum=0;
            vector<int>dp(1501,0);
        for(int a : stones)
        {
            sum=sum+a;
        }

        int target = sum/2;

        for(int i=0;i<stones.size();i++)
        {
            for(int j= target;j>=stones[i];j--)
            {
                 dp[j] = max(dp[j] , dp[ j - stones[i] ]+stones[i]);
            }
        }
        return sum-dp[target]-dp[target];
    }
};

?在這里我們要特別對(duì)末尾進(jìn)行說(shuō)明,為什么是? ?return sum-dp[target]-dp[target];

其實(shí)很好理解,因?yàn)檫@里的dp數(shù)組是一堆石頭,而我們用sum-dp數(shù)組就得到了另外一堆石頭的重量,再減一次dp數(shù)組,實(shí)際就是模擬兩堆石頭進(jìn)行碰撞。

494. 目標(biāo)和 - 力扣(LeetCode)

給你一個(gè)非負(fù)整數(shù)數(shù)組 nums 和一個(gè)整數(shù) target 。

向數(shù)組中的每個(gè)整數(shù)前添加?'+' 或 '-' ,然后串聯(lián)起所有整數(shù),可以構(gòu)造一個(gè) 表達(dá)式 :

例如,nums = [2, 1] ,可以在 2 之前添加 '+' ,在 1 之前添加 '-' ,然后串聯(lián)起來(lái)得到表達(dá)式 "+2-1" 。
返回可以通過(guò)上述方法構(gòu)造的、運(yùn)算結(jié)果等于 target 的不同 表達(dá)式 的數(shù)目。

【力扣刷題 | 第二十四天】,【力扣刷題】,leetcode,算法,職場(chǎng)和發(fā)展

這道題其實(shí)我們可以這樣理解:?

一共有兩個(gè)集合,兩個(gè)集合分別裝數(shù)字,設(shè)置目標(biāo)值target,詢問(wèn)有幾種可能使得兩個(gè)集合相減的數(shù)字等于target

再優(yōu)化一下:

我們可以把target也作為一個(gè)數(shù)字加到這兩個(gè)集合的待選序列,詢問(wèn)有幾種可能? 使得兩個(gè)集合的值相等

??再轉(zhuǎn)化一下思維:

,而target只有一個(gè),也就是只能永遠(yuǎn)出現(xiàn)在一側(cè),另外一側(cè)始終沒(méi)有target,那么我們始終求沒(méi)有target的那一側(cè)不就好了嘛,換句話說(shuō),不就是在給定集合里面尋找有多少個(gè)集合的值等于(sum+target)/2/

那么我們不就又把這道題轉(zhuǎn)化為了背包問(wèn)題嘛?只不過(guò)以前我們總是在求是否有一種方法能把背包裝滿,現(xiàn)在求的是有多少種方法把背包裝滿。

因此我們按照動(dòng)態(tài)規(guī)劃五部曲走:

1.確定dp數(shù)組的含義:dp[j] 表示填滿容量為j的背包最多有dp[j]種方法,例如dp[2]是指填滿容量為2的背包最多有dp[2]種方法。

2.確定遞推公式:dp[j]+=dp[j-nums[i]];

class Solution {
public:
    int findTargetSumWays(vector<int>& nums, int target) {
        int sum=0;
        for(int a : nums)
        {
            sum=sum+a;
        }

        if((target + sum)%2==1) return 0;
        if(abs(target)>sum) return 0;
        else
        {
              int a = (target + sum) / 2;
              vector<int> dp(a + 1, 0);
             dp[0] = 1;
            for (int i = 0; i < nums.size(); i++) 
            {
               for (int j = a; j >= nums[i]; j--) 
               {
                dp[j] += dp[j - nums[i]];
                }
            }
        return dp[a];
        }
    }
};

總結(jié):

? ? ? ? 動(dòng)態(tài)規(guī)劃想清楚之后直接爆殺。

如果我的內(nèi)容對(duì)你有幫助,請(qǐng)點(diǎn)贊,評(píng)論,收藏。創(chuàng)作不易,大家的支持就是我堅(jiān)持下去的動(dòng)力!

【力扣刷題 | 第二十四天】,【力扣刷題】,leetcode,算法,職場(chǎng)和發(fā)展

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-629793.html

到了這里,關(guān)于【力扣刷題 | 第二十四天】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 第四十四天

    ●scoped 屬性 ? ? ?HTML5?中的新屬性(布爾屬性)。如果使用該屬性,則樣式僅僅應(yīng)用到 style 元素的父元素及其子元素。父組件的樣式將不會(huì)滲透到子組件中。 ? ? ?實(shí)現(xiàn)組件的私有化,不對(duì)全局造成樣式污染,表示當(dāng)前style屬性只屬于當(dāng)前模塊。 ●CSS動(dòng)畫 ? ? ?動(dòng)畫允許元素

    2024年02月16日
    瀏覽(27)
  • 第四十四天打卡

    零錢兌換 II 中等 1K 相關(guān)企業(yè) 給你一個(gè)整數(shù)數(shù)組 coins 表示不同面額的硬幣,另給一個(gè)整數(shù) amount 表示總金額。 請(qǐng)你計(jì)算并返回可以湊成總金額的硬幣組合數(shù)。如果任何硬幣組合都無(wú)法湊出總金額,返回 0 。 假設(shè)每一種面額的硬幣有無(wú)限個(gè)。 題目數(shù)據(jù)保證結(jié)果符合 32 位帶符號(hào)

    2024年02月03日
    瀏覽(26)
  • 算法練習(xí)第六十四天

    LCR 184. 設(shè)計(jì)自助結(jié)算系統(tǒng) - 力扣(LeetCode) 總結(jié):利用一個(gè)雙端維護(hù)隊(duì)列一個(gè)往后遞減的隊(duì)列,對(duì)頭是最大值,每次進(jìn)入一個(gè)新值時(shí)就一直和隊(duì)尾元素比較將比新的值小的數(shù)排出,這樣能保證留在隊(duì)列中的數(shù)都是會(huì)對(duì)最大值產(chǎn)生影響的數(shù),而當(dāng)主隊(duì)列中將要排出的數(shù)與雙端隊(duì)

    2024年02月07日
    瀏覽(30)
  • 學(xué)習(xí)Android的第十四天

    目錄 Android DatePicker 日期選擇器 DatePicker 屬性 和 事件 DatePicker 事件 獲得 DatePicker 的值 Android TimePicker 時(shí)間選擇器 TimePicker 屬性 TimePicker 事件 獲得 TimePicker 的值 Android CalendarView 日歷視圖 CalendarView 屬性 CalendarView 事件 獲得 CalendarView 的值 在Android中,DatePicker是一個(gè)用戶界面組件

    2024年02月21日
    瀏覽(25)
  • MFC補(bǔ)充第十四天 句柄嫁接與子類化

    句柄嫁接與子類化: a)Attach和Detach就是單純的嫁接與分離函數(shù)。 對(duì)象一旦嫁接入一個(gè)句柄,就可以自由地調(diào)用CWnd或其派生類的功能。 b)子類化Subclass內(nèi)部包含Attach,額外再增加一個(gè)消息轉(zhuǎn)撥到派生類(SubClass就是子類) c)SubClassWindow函數(shù)內(nèi)部核心功能就是Attach和::SetWindowLong

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

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

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

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

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

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

    2024年02月12日
    瀏覽(21)
  • 十四天學(xué)會(huì)C++之第一天(入門和基本語(yǔ)法)

    十四天學(xué)會(huì)C++之第一天(入門和基本語(yǔ)法)

    C++誕生于20世紀(jì)80年代初,它的創(chuàng)造者是計(jì)算機(jī)科學(xué)家Bjarne Stroustrup。當(dāng)時(shí),Stroustrup在貝爾實(shí)驗(yàn)室工作,他希望為C語(yǔ)言添加一些功能,以便更好地支持系統(tǒng)開(kāi)發(fā)。這個(gè)愿望促使他創(chuàng)建了C++。 C++的名字來(lái)源于它的基因,其中的\\\"C\\\"代表了C語(yǔ)言,而\\\"++\\\"表示C語(yǔ)言的一個(gè)增強(qiáng)版本。這

    2024年02月07日
    瀏覽(23)
  • 十四天學(xué)會(huì)C++之第五天:類的詳細(xì)討論

    什么是友元函數(shù)和友元類,它們的作用。 如何聲明和使用友元函數(shù)和友元類,訪問(wèn)類的私有成員。 友元函數(shù)(Friend Functions) 友元函數(shù)是一種特殊的函數(shù),它被允許訪問(wèn)類的私有成員。這意味著即使成員是私有的,友元函數(shù)也能夠直接訪問(wèn)它們,而不需要通過(guò)公有接口。這提

    2024年02月07日
    瀏覽(18)
  • 藍(lán)橋杯十四天沖刺班 第十四天《考場(chǎng)經(jīng)驗(yàn) | 歷年考點(diǎn) | 藍(lán)橋杯押題》《C,JAVA,PY在藍(lán)橋杯中必須要會(huì)用的容器 | 集合》(3K+字解析)

    藍(lán)橋杯十四天沖刺班 第十四天《考場(chǎng)經(jīng)驗(yàn) | 歷年考點(diǎn) | 藍(lán)橋杯押題》《C,JAVA,PY在藍(lán)橋杯中必須要會(huì)用的容器 | 集合》(3K+字解析)

    ???博客首頁(yè):Sonesang的博客 ??歡迎關(guān)注??點(diǎn)贊??收藏??留言?? ?? :熱愛(ài)Java與算法學(xué)習(xí),期待一起交流! ??作者水平很有限,如果發(fā)現(xiàn)錯(cuò)誤,求告知,多謝! ??有問(wèn)題可私信交流?。。?? 目錄 算法 實(shí)力 = 知識(shí)點(diǎn)+刷題量+速度+靈活的大腦 C++組知識(shí)點(diǎn) java組知識(shí)點(diǎn)

    2023年04月15日
    瀏覽(57)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包