题目描述
给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
candidates 中的每个数字在每个组合中只能使用一次。
说明:所有数字(包括目标数)都是正整数 , 解集不能包含重复的组合。
力扣:40 组合总和 II
输入: candidates = [2,5,2,1,2], target = 5,
所求解集为:[[1,2,2],[5]]
题目分析
此题和 组合总和 不一样的地方在于, candidates 数组中的可以存在重复元素, 且每个元素不能重复选取。树形图如下 (图片来源) :
由 组合总和 我们知道,数组 candidates 有序,也是深度优先遍历 过程中实现「剪枝」的前提。
AC代码:
class Solution {
int[] candidates;
List<List<Integer>> result =