13 組合總和IV

2021-09-08 23:49:21 字數 1083 閱讀 7075

題目描述:

給定乙個由正整數組成且不存在重複數字的陣列,找出和為給定目標正整數的組合的個數。

示例:nums = [1, 2, 3]

target = 4

所有可能的組合為:

(1, 1, 1, 1)

(1, 1, 2)

(1, 2, 1)

(1, 3)

(2, 1, 1)

(2, 2)

(3, 1)

請注意,順序不同的序列被視作不同的組合。

因此輸出為 7。

高階:如果給定的陣列中含有負數會怎麼樣?

問題會產生什麼變化?

我們需要在題目中新增什麼限制來允許負數的出現?

致謝:特別感謝 @pbrother 新增此問題並建立所有測試用例。

和之前不同的是這裡只要返回滿足條件的個數即可,不需要其他的,因此如果使用遞迴的話肯定超時,因此考慮使用的是動態規劃來進行,

考慮target,dp[x] 表示的是目標數是x時的個數,那麼首先從1一直遍歷到target變數為i,對於每乙個數x,遍歷nums陣列,如果x>=i, dp[x] += dp[ x - i]。這個也很好理解,比如說對於[1,2,3] 4,這個例子,當我們在計算dp[3]的時候,3可以拆分為1+x,而x即為dp[2],3也可以拆分為2+x,此時x為dp[1],3同樣可以拆為3+x,此時x為dp[0],我們把所有的情況加起來就是組成3的所有情況了

參照新增鏈結描述

class solution 

} return dp[target]; }}

效率還行其實

排名靠前的**

class solution 

// }

// return res;

}private int helper(int nums, int target)

}memo[target] = res;

return res;}}

LintCode刷題 564 組合總和 IV

給出乙個都是正整數的陣列 nums,其中沒有重複的數。從中找出所有的和為 target 的組合個數。樣例樣例1 輸入 nums 1,2,4 和 target 4 輸出 6 解釋 可能的所有組合有 1,1,1,1 1,1,2 1,2,1 2,1,1 2,2 4 樣例2 輸入 nums 1,2 和 ta...

39 組合總和

給定乙個無重複元素的陣列 candidates 和乙個目標數 target 找出 candidates 中所有可以使數字和為 target 的組合。candidates 中的數字可以無限制重複被選取。說明 示例 1 輸入 candidates 2,3,6,7 target 7,所求解集為 7 2,2...

39 組合總和

給定乙個無重複元素的陣列candidates和乙個目標數target,找出candidates中所有可以使數字和為target的組合。candidates中的數字可以無限制重複被選取。說明 示例 1 輸入 candidates 2,3,6,7 target 7,所求解集為 7 2,2,3 示例 2 ...