[刷题]Combination Sum

来源:互联网 发布:unity3d 内嵌网页 编辑:程序博客网 时间:2024/06/14 04:49

[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);        }    }}


0 0
原创粉丝点击