39. Combination Sum

来源:互联网 发布:电脑怎么识别不了网络 编辑:程序博客网 时间:2024/06/06 07:10

Given a set of candidate numbers (C(without duplicates) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.

The same repeated number may be chosen from C unlimited number of times.

Note:

  • All numbers (including target) will be positive integers.
  • The solution set must not contain duplicate combinations.

For example, given candidate set [2, 3, 6, 7] and target 7


public class Solution {    public List<List<Integer>> combinationSum(int[] candidates, int target) {            List<List<Integer>> l=new ArrayList<>();            ArrayList<Integer> list=new ArrayList<>();            helper(candidates,target,l,list,0);            return new ArrayList<>(l);    }    public void helper(int[] candidates,int target,List<List<Integer>> l,List<Integer> list,int index){        if(target==0){            l.add(new ArrayList<>(list));            return;        }        for(int i=index;i<candidates.length;i++){            if(target>=candidates[i]){                list.add(candidates[i]);                helper(candidates,target-candidates[i],l,list,i);                list.remove(list.size()-1);            }        }    }}







0 0