zoukankan      html  css  js  c++  java
  • [leetcode-40-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.
    • 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]
    ]

    思路:

    典型回溯法,需要注意的就是存在重复情况的处理。

    void combine(vector<vector<int>>& res, vector<int>& candidates, vector<int>& cantemp,int begin, int target)
         {
             if (target < 0) return;
             
             if ( target == 0)
             {
                 res.push_back(cantemp);
                 return;
             }
             for (int i = begin; i < candidates.size();i++)
             {
                 //if (candidates[i]>target)return;
                 if (i && candidates[i]==candidates[i-1]&& i>begin) continue;//避免重复元素
                 cantemp.push_back(candidates[i]);
                 combine(res, candidates, cantemp, i + 1, target - candidates[i]);
                 cantemp.pop_back();             
             }
         }
         vector<vector<int>> combinationSum2(vector<int>& candidates, int target)
         {        
             vector<vector<int>> res;
             if (candidates.size() == 0)return res;
             sort(candidates.begin(), candidates.end());
             vector<int> cantemp;
             combine(res, candidates, cantemp, 0, target);
             return res;
         }

    参考:

    https://discuss.leetcode.com/topic/8916/c-backtracking-solution-with-detailed-explanation

  • 相关阅读:
    损失函数
    DPM 目标检测1
    编程题
    枚举型和元类
    python 多继承
    网络基础Cisco路由交换一
    网络基础tcp/ip协议五
    网络基础tcp/ip协议四
    网络基础tcp/ip协议三
    网络基础tcp/ip协议二
  • 原文地址:https://www.cnblogs.com/hellowooorld/p/7009000.html
Copyright © 2011-2022 走看看