题目描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/4a9a614f206f44a6a3a1f65207141fd8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6Lqr5b2x546L5bqn,size_20,color_FFFFFF,t_70,g_se,x_16)
Java解决办法
class Solution {
public List<List<Integer>> combinationSum2(int[] candidates, int target) {
Arrays.sort(candidates);
List<List<Integer>> lists = new ArrayList<>();
Deque<Integer> list = new ArrayDeque<>();
int len = candidates.length;
fun(candidates,target,lists,0,len,list);
return lists;
}
private void fun(int[] candidates, int target,List<List<Integer>> lists,int begin,int len,Deque<Integer> list)
{
if(target == 0)
{
lists.add(new ArrayList<>(list));
return;
}
for(int i = begin;i < len;i++)
{
if(target - candidates[i] < 0)
{
break;
}
if (i > begin && candidates[i] == candidates[i - 1]) {
continue;
}
list.addLast(candidates[i]);
fun(candidates,target - candidates[i],lists,i + 1,len,list);
list.removeLast();
}
}
}
![在这里插入图片描述](https://img-blog.csdnimg.cn/6c45e0e631dc4a69b6a205830c095d02.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6Lqr5b2x546L5bqn,size_20,color_FFFFFF,t_70,g_se,x_16)