leetcode 40: 组合总和 II

leetcode 40: 组合总和 II_第1张图片leetcode 40: 组合总和 II_第2张图片

本题跟leetcode39很类似,感觉比39简单一点儿,首先对candidates数组进行排序,递归中的第一步是对数组第一个数进行操作,可以选择选取,也可以选择不选取

同时注意去除重复的数组

void combination(std::vector> &a,std::vector v,std::vector candidates,int target,int len,int curr){
    if(target==0){
        for(int i=0;i v1=v;
    c=c-d;
    if(c<0)
        return;
    else if(c==0){
        v1.push_back(d);
        combination(a,v1,candidates,c,len,curr);
    }
    else
    {
        if(curr+1> combinationSum2(std::vector& candidates, int target) {
    std::vector> a;
    std::vector v;
    std::sort(candidates.begin(),candidates.end());
    int len=candidates.size();
    combination(a,v,candidates,target,len,0);
    return a;
}

 

你可能感兴趣的:(leetcode)