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

    题目链接

    Combination Sum II - LeetCode

    注意点

    • 数字不能重复使用

    解法

    解法一:和Combination Sum这道一样,递归的时候跳过重复数字,并且参数改为i+1。

    class Solution {
    public:
        void dfs(vector<int>& candidates, int target,vector<int>& v,vector<vector<int>>& ret,int index)
        {
            if(target < 0) return;
            if(target == 0)
            {
                ret.push_back(v);
                return;
            }
            for(int i = index;i < candidates.size();i++)
            {
                if(candidates[i] <= target)
                {
                    v.push_back(candidates[i]);
                    dfs(candidates,target-candidates[i],v,ret,i+1);
                    while(i+1 < candidates.size() && v.back() == candidates[i+1]) ++i;
                    v.pop_back();
                }
                else break;
            }
        }
        vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {
            sort(candidates.begin(),candidates.end());
            vector<vector<int>> ret;
            vector<int> v;
            dfs(candidates,target,v,ret,0);
            return ret;
        }
    };
    

    小结

    • 递归题
  • 相关阅读:
    map
    构造函数和对象
    for...in...and for each...in...
    事件
    JSON
    css伪类
    正则表达式
    什么是DOM、什么是BOM
    CSS颜色
    grid-layout实验
  • 原文地址:https://www.cnblogs.com/multhree/p/10419300.html
Copyright © 2011-2022 走看看