zoukankan      html  css  js  c++  java
  • LeetCode_Combination Sum II

    Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.
    
    Each number in C may only be used once in the combination.
    
    Note:
    
    All numbers (including target) will be positive integers.
    Elements in a combination (a1, a2, � , ak) must be in non-descending order. (ie, a1 ? a2 ? � ? ak).
    The solution set must not contain duplicate combinations.
    For example, given candidate set 10,1,2,7,6,1,5 and target 8, 
    A solution set is: 
    [1, 7] 
    [1, 2, 5] 
    [2, 6] 
    [1, 1, 6] 
    

      

    class Solution {
    public:
        void  DFS(vector<int> &candidates, int target, int start, int sum, vector<int> &tp){
        	if(sum == target){
    			res.push_back(tp);
    			return;
    		}
    		for(int i = start; i< candidates.size(); ++i){
    		    if(i != start && candidates[i] == candidates[i-1])
    					continue;
    			if(candidates[i] + sum <= target){
    				tp.push_back(candidates[i]);
    				DFS(candidates, target, i+1, sum+candidates[i], tp);
    				tp.pop_back();
    			}
    		}
    	}
        vector<vector<int> > combinationSum2(vector<int> &candidates, int target) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            res.clear();
    		int len = candidates.size();
    		if(len < 1 || target <1) return res;
    		sort(candidates.begin(), candidates.end());
    		vector<int> tp;
    		DFS(candidates, target, 0, 0, tp);
    		return res;
    		
        }
    private:
    	vector<vector<int>> res;
    };
    

      

  • 相关阅读:
    给TextView底部添加横线
    app支付宝授权登录获取用户信息
    java 面试题整理
    mybatis中app的查询语句
    mybatis 存储过程的写法
    mybatis中存储过程的调用
    字符串替换
    网站收藏
    liunx+mysql数据库管理
    缓存的介绍
  • 原文地址:https://www.cnblogs.com/graph/p/3322989.html
Copyright © 2011-2022 走看看