zoukankan      html  css  js  c++  java
  • LeetCode OJ-- Combination Sum II **

    https://oj.leetcode.com/problems/combination-sum-ii/

    一列数,每个数只能用一次或者不用,给出和为target的组合。

    递归写的深搜,使用了编程技巧,引用。因为递归在本意上是不需要这个引用的,因为它额外的改了调用参数,所以,又有相应的 pop_back()

    #include <iostream>
    #include <vector>
    #include <string>
    #include <algorithm>
    using namespace std;
    
     class Solution {
    public:
        vector<vector<int> > combinationSum2(vector<int> &num, int target){
            vector<vector<int> > ans;
            if(num.size()==0)
                return ans;
    
            sort(num.begin(),num.end());
            
            if(num[0]>target)
                return ans;
    
            //remove the elements greater than target
            int len = num.size();
            while(len>=1 && num[len-1] > target)
                len--;
            num.resize(len);
    
            vector<int> ansPiece;
            combinationSum(num,ans,target,0,ansPiece);
            
           //remove duplicates
            sort(ans.begin(),ans.end());
            ans.erase(unique(ans.begin(),ans.end()),ans.end());
    
            return ans;
        }
        void combinationSum(vector<int> & num,vector<vector<int> > &ans,int target,int pivot,vector<int> &ansPiece)
        {
            if(target == 0)
            {
                ans.push_back(ansPiece);
                return;
            }
            if( target <0 ||pivot == num.size())
                return;
    
            combinationSum(num,ans,target,pivot+1,ansPiece);
    
            ansPiece.push_back(num[pivot]);
            combinationSum(num,ans,target - num[pivot],pivot+1,ansPiece);
            ansPiece.pop_back();
        }
    };
    int main()
    {
        vector<int> num;
        num.push_back(10);
        num.push_back(1);
        num.push_back(2);
        num.push_back(7);
        num.push_back(6);
        num.push_back(1);
        num.push_back(5);
     
        class Solution mys;
        mys.combinationSum2(num,8);
    }
  • 相关阅读:
    python包的安装及依赖-pip wget pipdeptree
    Http、Socket、WebSocket之间联系与区别
    python的https请求移除ssl验证警告
    uwsgi启动django应用 https访问设置问题解决 & uwsgi: unrecognized option '--https' | ubuntu20.04
    图像frame大小计算
    完全实验|不完全实验|
    随机区组设计|拉丁方
    TPO2-3 Early Cinema
    TPO2-1Desert Formation
    TPO9-2Reflection in Teaching
  • 原文地址:https://www.cnblogs.com/qingcheng/p/3808972.html
Copyright © 2011-2022 走看看