LeetCode 377. Combination Sum IV
2020-05-24 19:51:01
# leetcode
# core problems
Problem
LeetCode 377. Combination Sum IV
1. 题目简述
给出一个无重复的正整数数组nums,一个目标数target,找出和为target的所有可能的组合,每个数字可以取多个。例如:
Input: candidates = [2,3,6,7], target = 7,
A solution set is:
[
[7],
[2,2,3]
]
2. 算法思路
回溯
那么我们应该使用什么算法呢?还是回溯么?貌似是可行的,只要将循环时的startIndex不设置为i,始终设置为0即可。代码放在下面(实际上会TLE)。
DP
这道题是combination sum系列的第四题,又是不重复的数字,每个数字可以多次,和combination sum I很像,但是1中要求不能有重复的组合([1, 2, 3]和[3, 2, 1]算一种),而4中即使是相同的数字,不同的排列组合也算不同。例如,我们希望用[1, 2, 3]组合得到7,对于[1, 1]和[2]来说,其实目标都是找出组合为5的所有可能的排列组合的可能性,重复计算,数字越大,重复计算越多,所以DP才是相对较好的解。
3. 解法
- 回溯。会TLE,原因在于这相当于是一个排列组合问题,由[1, 2, 3]组成30的可能性已经有53798080种,而这其中的每一种都是由好多层递归来实现的,重叠子问题计算得太多。
1 |
|
- DP。顺利通过。
1 |
|