题目描述
给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数。
示例
1 | nums = [1, 2, 3] |
解题思路
这是一个比较典型的动态规划问题。假设数组中元素为3个:m, n, k。那么我们可以知道任何一个数num,即dp[num] = dp[num - m] + dp[num - n] + dp[num - k]。
比如示例中,dp[4] = dp[3] + dp[2] + dp[1],而dp[3] = dp[2] + dp[1] + dp[0],这儿的dp[0] = 1。所以我们从dp[0]一次往后计算,即可得到dp[target]。
解题代码
1 | class Solution { |