【发布时间】:2020-11-08 12:04:04
【问题描述】:
问题是:
给定一个包含所有正数且没有重复的整数数组,找出加起来为正整数目标的可能组合数。
例子:
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。
def combinationSum4(nums: List[int], target: int) -> int:
if target == 0:
return 1
elif target < 0:
return 0
elif len(nums) == 0:
return 1
else:
return combinationSum4(nums[1:], target-nums[0]) + combinationSum4(nums[1:], target)
输出是 7,但我得到的是 6。
【问题讨论】:
-
为什么
target == 0和len(nums) == 0的结果应该是1而不是0? -
因为空数组考虑是解决方案之一。
-
那么如果
nums = []和target = 5结果是1? -
嗯。我不确定问题没有具体说明。