力扣:组合总和 II DFS剪枝
- 组合总和 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剪枝相关推荐
- [Leetcode][第39题][JAVA][组合总和][回溯][dfs][剪枝]
[问题描述][中等] [解答思路] 1. 回溯 import java.util.ArrayDeque; import java.util.ArrayList; import java.util.De ...
- 77.组合 | 40.组合总和II | 39.组合总和 | 784.字母大小写全排列
77.组合 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合. 你可以按 任何顺序 返回答案. 示例 1: 输入:n = 4, k = 2 输出: [ [2,4], ...
- 005. 组合总和 II
1.题目链接: 40. 组合总和 II 2.解题思路: 树层:同层遍历 树枝:递归遍历 2.1.题目要求: 给定一个数组 candidates 和一个目标数 target ,找出 candidates ...
- Leetcode 组合总和II
组合总和II 题目描述: 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字 ...
- ii 组合总和_40. 组合总和 II
题目描述: 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在每个组合中只 ...
- Suzy找到实习了吗 Day27 | 回溯进行中:39. 组合总和,40. 组合总和 II,131.分割回文串
39. 组合总和 题目 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 , ...
- leetcode系列--40.组合总和 II
leetcode系列–第40题.组合总和 II 给你一个由候选元素组成的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合 ...
- leetcode 39. 组合总和 40. 组合总和 II
leetcode 39. 组合总和 40. 组合总和 II 组合总和 给定一个无重复元素的正整数数组 candidates 和一个正整数 target ,找出 candidates 中所有可以使数字和 ...
- 【LeetCode】40. 组合总和 II (JavaScript)
原题 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在每个组 ...
最新文章
- 【集训队作业2018】围绕着我们的圆环
- 算法导论学习笔记 第7章 快速排序
- java中if判断季节_Java判断用户输入月份的季节
- 2015结束,2016开始
- C语言代码规范(九)运算符优先级使用括号提高阅读性
- 输出26个英文字母c语言,菜鸟求助,写一个随机输出26个英文字母的程序
- Mac下配置多个SSH-Key (gitLab)
- 混音新手必备软件:FL Studio,用它简单制作混音
- java表格标题栏_java使用poi自定义excel标题头并导出(springmvc+poi)
- 学会忘记其实是一种美德
- 互联网下半场的基本玩法
- C# .net MVC 微信红包(服务号发送红包)
- 知到答案 环境学概论 智慧树网课章节测试答案
- 浅谈知识表示之语义网络、RDF和OWL
- VirtualBox 删除虚拟机
- python爬虫汽车之家全车型及基本参数入数据库(截止50524个数据)(详解)
- 微积分位于基础数学的核心部分
- mtk LK流程简介
- 配置Centos7网卡聚合链路
- Practice—毛绒玩具名字(字典序排序)
热门文章
- 【2016.11.16】HTML学习笔记
- 军训分批(codevs 2751)
- IOS 开发中 Whose view is not in the window hierarchy 错误的解决办法
- 升级ADT22.6后,Android模拟器无法创建
- unity3d由多个部分组成一个角色
- C#如何使用httpwebrequest通过代理访问网页
- WPF中打印问题的探讨[转]
- 知识管理系统Data Solution研发日记之十二 网页数据抓取Fetch,呈现Render,导出Export...
- android记事本项目案例,Android实现记事本项目完整实例源代码
- 3、jeecg 笔记之 模糊查询