[刷题]Combination Sum

原创 2015年07月09日 10:05:55

[LintCode]Combination Sum

public class Solution {
    /**
     * @param candidates: A list of integers
     * @param target:An integer
     * @return: A list of lists of integers
     */
    public List<List<Integer>> combinationSum(int[] candidates, int target) {
        // 2015-08-28
        // candicates中不含重复元素,元素可以重复使用
        // 解集中不可以含相同解
        List<List<Integer>> rst = new ArrayList<List<Integer>>();
        if (candidates == null || candidates.length == 0) {
            return rst;
        }
        
        List<Integer> list = new ArrayList<>();
        Arrays.sort(candidates);
        helper(candidates, rst, list, target, 0);
        return rst;     
    }
    
    private void helper(int[] candidates, List<List<Integer>> rst, List<Integer> list,
            int left, int pos) {
        if (left == 0) {
            rst.add(new ArrayList<Integer>(list));
            return;
        }
        
        for (int i = pos; i < candidates.length; i++) {
            if (left - candidates[i] < 0) {
                break;
            }
            list.add(candidates[i]);
            helper(candidates, rst, list, left - candidates[i], i);
            list.remove(list.size() - 1);
        }
    }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【LeetCode从零单刷】Combinations & Combination Sum 系列

题目: Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For...

135.Combination Sum-数字组合(中等题)

数字组合 题目给出一组候选数字(C)和目标数字(T),找到C中所有的组合,使找出的数字和为T。C中的数字可以无限制重复被选取。 例如,给出候选数组[2,3,6,7]和目标数字7,所求的解为: [...

LeetCode OJ算法题(三十九):Combination Sum II

题目: Given a collection of candidate numbers (C) and a target number (T), find all unique combin...
  • op_yu
  • op_yu
  • 2014-07-25 12:26
  • 248

39/40. Combination Sum (两题)

39.Combination Sum 像这种结果要求返回所有符合要求解的题十有八九都是要利用到递归,而且解题的思路都大同小异,相类似的题目有 Path Sum II 二叉树路径之和之二,Subset...

LeetCode OJ算法题(三十八):Combination Sum

题目: Given a set of candidate numbers (C) and a target number (T), find all unique combinations ...
  • op_yu
  • op_yu
  • 2014-07-25 12:10
  • 351

LeetCode第39题之Combination Sum(两种方法)

思路:两种方法都是利用递归回溯,第二方法在第一种方法的基础上对原始数据先进行排序,这样可以剪枝,加快计算速度。第一种方法在LeetCode上测试运行的时间是24ms,第二种方法运行时间为16ms。 ...

Python 刷题日记: Letter Combination of a Phone Number

原题: Given a digit string, return all possible letter combinations that the number could represent. ...

LeetCode 39. Combination Sum II

和LeetCode 38. Combination Sum

39-Combination Sum

题目:Given a set of candidate numbers (C) (without duplicates) and a target number (T), find all uniqu...

Leetcode|Combination Sum III[回溯]

Find all possible combinations of k numbers that add up to a number n, given that only numbers from ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)