题目描述
Java解决方法
class Solution {
public List<List<Integer>> combinationSum(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;
}
list.addLast(candidates[i]);
fun(candidates,target - candidates[i],lists,i,len,list);
list.removeLast();
}
}
}