1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        ?LeetCode刷題實(shí)戰(zhàn)377:組合總和 Ⅳ

        共 2549字,需瀏覽 6分鐘

         ·

        2021-09-13 16:02

        算法的重要性,我就不多說(shuō)了吧,想去大廠,就必須要經(jīng)過(guò)基礎(chǔ)知識(shí)和業(yè)務(wù)邏輯面試+算法面試。所以,為了提高大家的算法能力,這個(gè)公眾號(hào)后續(xù)每天帶大家做一道算法題,題目就從LeetCode上面選 !

        今天和大家聊的問(wèn)題叫做 組合總和 Ⅳ,我們先來(lái)看題面:
        https://leetcode-cn.com/problems/find-k-pairs-with-smallest-sums/

        Given an array of distinct integers nums and a target integer target, return the number of possible combinations that add up to target.


        The answer is guaranteed to fit in a 32-bit integer.


        給你一個(gè)由 不同 整數(shù)組成的數(shù)組 nums ,和一個(gè)目標(biāo)整數(shù) target 。請(qǐng)你從 nums 中找出并返回總和為 target 的元素組合的個(gè)數(shù)。
        題目數(shù)據(jù)保證答案符合 32 位整數(shù)范圍。

        示例


        示例 1

        輸入:nums = [1,2,3], target = 4
        輸出:7
        解釋:
        所有可能的組合為:
        (1, 1, 1, 1)
        (1, 1, 2)
        (1, 2, 1)
        (1, 3)
        (2, 1, 1)
        (2, 2)
        (3, 1)
        請(qǐng)注意,順序不同的序列被視作不同的組合。

        示例 2

        輸入:nums = [9], target = 3
        輸出:0


        解題


        動(dòng)態(tài)規(guī)劃

        本題第一眼以為是dfs,但是實(shí)在想不出來(lái)下標(biāo)怎么處理
        dp數(shù)組的意義:dp[i]代表'target = i'時(shí)的組合數(shù)目,顯然此時(shí)dp數(shù)組的初始化長(zhǎng)度為target+1。
        遍歷規(guī)則:1 <= i <= target, ++i,target值從小到大。內(nèi)層遍歷是遍歷nums數(shù)組。
        更新規(guī)則:dp[i] += dp[i-num],隱含的含義是若當(dāng)前i >= num,那么可以在dp[i-num]加入num,組合為一個(gè)完整組合。
        邊界條件:dp[0] = 1,當(dāng)i == num,代表本身數(shù)字是一個(gè)組合,因此dp[0]需等于1。

        class Solution {
        public:
           
            int combinationSum4(vector<int>& nums, int target) {
                // dp[i]:target為i時(shí)的組合數(shù)目

                vector<int> dp(target+1, 0);
                dp[0] = 1;
                for(int i = 1; i < target + 1;++i){
                    for(auto num:nums){
                        if(num <= i && dp[i-num] < INT_MAX - dp[i]) // 防止越界
                            dp[i] += dp[i - num];
                    }
                }

                return dp[target];
            }
        };


        好了,今天的文章就到這里,如果覺(jué)得有所收獲,請(qǐng)順手點(diǎn)個(gè)在看或者轉(zhuǎn)發(fā)吧,你們的支持是我最大的動(dòng)力 。

        上期推文:

        LeetCode1-360題匯總,希望對(duì)你有點(diǎn)幫助!

        LeetCode刷題實(shí)戰(zhàn)361:轟炸敵人

        LeetCode刷題實(shí)戰(zhàn)362:敲擊計(jì)數(shù)器

        LeetCode刷題實(shí)戰(zhàn)363:矩形區(qū)域不超過(guò) K 的最大數(shù)值和
        LeetCode刷題實(shí)戰(zhàn)364:加權(quán)嵌套序列和 II
        LeetCode刷題實(shí)戰(zhàn)365:水壺問(wèn)題
        LeetCode刷題實(shí)戰(zhàn)366:尋找二叉樹(shù)的葉子節(jié)點(diǎn)
        LeetCode刷題實(shí)戰(zhàn)367:有效的完全平方數(shù)
        LeetCode刷題實(shí)戰(zhàn)368:最大整除子集數(shù)
        LeetCode刷題實(shí)戰(zhàn)369:給單鏈表加一
        LeetCode刷題實(shí)戰(zhàn)370:區(qū)間加法
        LeetCode刷題實(shí)戰(zhàn)371:兩整數(shù)之和
        LeetCode刷題實(shí)戰(zhàn)372:超級(jí)次方
        LeetCode刷題實(shí)戰(zhàn)373:查找和最小的K對(duì)數(shù)字
        LeetCode刷題實(shí)戰(zhàn)374:猜數(shù)字大小
        LeetCode刷題實(shí)戰(zhàn)375:猜數(shù)字大小 II
        LeetCode刷題實(shí)戰(zhàn)376:擺動(dòng)序列

        瀏覽 49
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            日本操逼图片 | 怡红院成人免费电影 | xxx大片免费视频 | 成人精品毛片在线播放 | 国产一级a毛一级a看免费观看 | 91小黄片| 日韩肏屄网 | 韩国少妇性xxxx少妇 | 寝室里的高潮h百合 | 色综合色综合 |