Problem 5 Combination of coins
Method 1一个一个加
public List<List<Integer>> combinations(int target, int[] coins) {
// sanity check
// initial
List<List<Integer>> result = new ArrayList<>();
if (coins == null || coins.length == 0) {
return result;
}
int[] path = new int[coins.length]; // 因为你需要记录一共这个元素用了多少次,所以需要对该类型的coin进行记录
// dfs
backTracking(result, path, coins, target, 0);
// return
return result;
}
private void backTracking(List<List<Integer>> result, int[] path, int[] coins, int target, int index) {
// base case
if (target == 0) {
addCurrentResult(result, path);
return;
}
// dfs , i代表你拿了谁
for (int i = index; i < coins.length; i++) {
if (target - coins[i] >= 0) {
path[i] += 1;
backTracking(result, path, coins, target - coins[i], i);
path[i] -= 1;
}
}
//
}Master alter method:
Method 2考虑数量
TC& SC
Last updated