1. 组合总和 II
    给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。

candidates 中的每个数字在每个组合中只能使用一次。

说明:

所有数字(包括目标数)都是正整数。
解集不能包含重复的组合。
示例 1:

输入: candidates = [10,1,2,7,6,1,5], target = 8,
所求解集为:
[
[1, 7],
[1, 2, 5],
[2, 6],
[1, 1, 6]
]
示例 2:

输入: candidates = [2,5,2,1,2], target = 5,
所求解集为:
[
[1,2,2],
[5]
]

题解:set去重+dfs搜索,不重复搜,记录位置,取过就跳过,排序之后进行搜索,从上次搜过的位置继续往下搜可以减少重复搜索解。

class Solution {public:vector<int>res;set<vector<int>>fin;map<int,bool>bok;void dfs(vector<int>&candidates,int target,int s){for(int i=s;i<candidates.size();++i){if(bok[i]==1)continue;int s = candidates[i];if(s==target){res.push_back(candidates[i]);fin.insert(res);res.pop_back();return;}else if(s>target) return;else {bok[i]=1;res.push_back(candidates[i]);dfs(candidates,target-candidates[i],i+1);bok[i]=0;}res.pop_back();}}vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {sort(candidates.begin(),candidates.end(),less<int>());dfs(candidates,target,0);vector<vector<int>>ans;for(set<vector<int>>::iterator it = fin.begin();it!=fin.end();it++)ans.push_back(*it);return ans;}
};

力扣:组合总和 II DFS剪枝相关推荐

  1. [Leetcode][第39题][JAVA][组合总和][回溯][dfs][剪枝]

    [问题描述][中等] [解答思路] 1. 回溯 import java.util.ArrayDeque; import java.util.ArrayList; import java.util.De ...

  2. 77.组合 | 40.组合总和II | 39.组合总和 | 784.字母大小写全排列

    77.组合 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合. 你可以按 任何顺序 返回答案. 示例 1: 输入:n = 4, k = 2 输出: [   [2,4], ...

  3. 005. 组合总和 II

    1.题目链接: 40. 组合总和 II 2.解题思路: 树层:同层遍历 树枝:递归遍历 2.1.题目要求: 给定一个数组 candidates 和一个目标数 target ,找出 candidates ...

  4. Leetcode 组合总和II

    组合总和II 题目描述: 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字 ...

  5. ii 组合总和_40. 组合总和 II

    题目描述: 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在每个组合中只 ...

  6. Suzy找到实习了吗 Day27 | 回溯进行中:39. 组合总和,40. 组合总和 II,131.分割回文串

    39. 组合总和 题目 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 , ...

  7. leetcode系列--40.组合总和 II

    leetcode系列–第40题.组合总和 II 给你一个由候选元素组成的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合 ...

  8. leetcode 39. 组合总和 40. 组合总和 II

    leetcode 39. 组合总和 40. 组合总和 II 组合总和 给定一个无重复元素的正整数数组 candidates 和一个正整数 target ,找出 candidates 中所有可以使数字和 ...

  9. 【LeetCode】40. 组合总和 II (JavaScript)

    原题 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在每个组 ...

最新文章

  1. 【集训队作业2018】围绕着我们的圆环
  2. 算法导论学习笔记 第7章 快速排序
  3. java中if判断季节_Java判断用户输入月份的季节
  4. 2015结束,2016开始
  5. C语言代码规范(九)运算符优先级使用括号提高阅读性
  6. 输出26个英文字母c语言,菜鸟求助,写一个随机输出26个英文字母的程序
  7. Mac下配置多个SSH-Key (gitLab)
  8. 混音新手必备软件:FL Studio,用它简单制作混音
  9. java表格标题栏_java使用poi自定义excel标题头并导出(springmvc+poi)
  10. 学会忘记其实是一种美德
  11. 互联网下半场的基本玩法
  12. C# .net MVC 微信红包(服务号发送红包)
  13. 知到答案 环境学概论 智慧树网课章节测试答案
  14. 浅谈知识表示之语义网络、RDF和OWL
  15. VirtualBox 删除虚拟机
  16. python爬虫汽车之家全车型及基本参数入数据库(截止50524个数据)(详解)
  17. 微积分位于基础数学的核心部分
  18. mtk LK流程简介
  19. 配置Centos7网卡聚合链路
  20. Practice—毛绒玩具名字(字典序排序)

热门文章

  1. 【2016.11.16】HTML学习笔记
  2. 军训分批(codevs 2751)
  3. IOS 开发中 Whose view is not in the window hierarchy 错误的解决办法
  4. 升级ADT22.6后,Android模拟器无法创建
  5. unity3d由多个部分组成一个角色
  6. C#如何使用httpwebrequest通过代理访问网页
  7. WPF中打印问题的探讨[转]
  8. 知识管理系统Data Solution研发日记之十二 网页数据抓取Fetch,呈现Render,导出Export...
  9. android记事本项目案例,Android实现记事本项目完整实例源代码
  10. 3、jeecg 笔记之 模糊查询