码迷,mamicode.com
首页 > 其他好文 > 详细

Combination Sum

时间:2018-03-04 18:09:53      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:nat   void   public   ida   div   ica   ons   ber   date   

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,
A solution set is:

[
  [7],
  [2, 2, 3]
]
public List<List<Integer>> combinationSum(int[] candidates, int target) {
        int length = candidates.length;
        Arrays.sort(candidates);
        List<List<Integer>> results = new ArrayList<>();
        helper(candidates,results,target,0,new ArrayList<>());
        return results;
    }

    public void helper(int[] candidates,List<List<Integer>> results,int target,int index,List<Integer> curr){
        if (target==0){
            ArrayList<Integer> item = new ArrayList<>();
            item.addAll(curr);
            results.add(item);
            return;
        }
        for (int i=index;i<candidates.length;i++){
            if (target>=candidates[i]){
                curr.add(candidates[i]);
                helper(candidates,results,target-candidates[i],i,curr);
                curr.remove(curr.size()-1);
            }
        }
    }

Combination Sum

标签:nat   void   public   ida   div   ica   ons   ber   date   

原文地址:https://www.cnblogs.com/bingo2-here/p/8505140.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!