[刷题]Combination Sum II

原创 2015年07月09日 19:13:42

[LintCode]Combination Sum II

public class Solution {
    /**
     * @param num: Given the candidate numbers
     * @param target: Given the target number
     * @return: All the combinations that sum to target
     */
    public List<List<Integer>> combinationSum2(int[] num, int target) {
        // 2015-07-09
        // num中可以含重复元素,每个元素只能使用一次
        // 解集中不可以含相同的解
        List<List<Integer>> rst = new ArrayList<List<Integer>>();
        if (num == null || num.length == 0) {
            return rst;
        }
        Arrays.sort(num);
        ArrayList<Integer> list = new ArrayList<>();
        helper(rst, list, num, target, 0);
        return rst;
    }
    
    private void helper(List<List<Integer>> rst, ArrayList<Integer> list, int[] num, int t, int pos) {
        if (t == 0) {
            rst.add(new ArrayList<Integer>(list));
            return;
        }
        for (int i = pos; i < num.length; i++) {
            if (t - num[i] < 0) {
                break;
            }
            if (i != pos && num[i] == num[i - 1]) { // 关键:注意是pos
                continue;
            }
            list.add(num[i]);
            helper(rst, list, num, t - num[i], i + 1);
            list.remove(list.size() - 1);
        }
        return;
    }
}


相关文章推荐

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
  • 258

LeetCode 39. Combination Sum II

和LeetCode 38. Combination Sum

LeetCode_40---Combination Sum II

Given a collection of candidate numbers (C) and a target number (T), find all unique combinations ...

leetcode Combination Sum II回溯问题

最近一直在看回溯算法的框架,这道题代表性比较强,用到剪枝(重复1),和约束(超过界限直接return)。 先贴下一般的回溯算法的框架。 引用自这个bolg http://blog.jqian.net/...

Leetcode #40. Combination Sum II 组合求和2 解题报告

1 解题思想这道题是昨天的升级版,先看看这个 Leetcode #39. Combination Sum 组合求和 解题报告这道题的改变就是每个位置的数只能用一次了,但是如果本身就给了多个的话就无...
  • MebiuW
  • MebiuW
  • 2016年04月11日 23:57
  • 509

LeetCode40 Combination Sum II 解析

详细见:leetcode.com/problems/combination-sum-ii C和Python的去重算法,应该记住。 Java是很久之前写的,并不好。 规则是:相同数字。 ...
  • zxwtry
  • zxwtry
  • 2017年04月06日 22:20
  • 124

[leetcode] 040. Combination Sum II (Medium) (C++)

[leetcode] 040. Combination Sum II (Medium) (C++)
  • hcbbt
  • hcbbt
  • 2015年08月08日 08:33
  • 1444

[LeetCode-Java]40. Combination Sum II

Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in...

Combination Sum I/II - Leetcode

Combination Sum Given a set of candidate numbers (C) and a target number (T), find all unique comb...

Leetcode 40. Combination Sum II

Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[刷题]Combination Sum II
举报原因:
原因补充:

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