LeetCode(40):组合总和 II
Medium!
题目描述:
给定一个数组 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]
]
解题思路:
这道题跟之前那道Combination Sum 组合之和 本质没有区别,只需要改动一点点即可,之前那道题给定数组中的数字可以重复使用,而这道题不能重复使用,只需要在之前的基础上修改两个地方即可,首先在递归的for循环里加上if (i > start && num[i] == num[i - 1]) continue; 这样可以防止res中出现重复项,然后将递归调用combinationSum2DFS里面的参数换成i+1,这样就不会重复使用数组中的数字了。
C++解法一:
 class Solution {
 public:
     vector<vector<int> > combinationSum2(vector<int> &num, int target) {
         vector<vector<int> > res;
         vector<int> out;
         sort(num.begin(), num.end());
         combinationSum2DFS(num, target, , out, res);
         return res;
     }
     void combinationSum2DFS(vector<int> &num, int target, int start, vector<int> &out, vector<vector<int> > &res) {
         if (target < ) return;
         else if (target == ) res.push_back(out);
         else {
             for (int i = start; i < num.size(); ++i) {
                 if (i > start && num[i] == num[i - ]) continue;
                 out.push_back(num[i]);
                 combinationSum2DFS(num, target - num[i], i + , out, res);
                 out.pop_back();
             }
         }
     }
 };
LeetCode(40):组合总和 II的更多相关文章
- Java实现 LeetCode 40 组合总和 II(二)
		40. 组合总和 II 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在 ... 
- LeetCode 40. 组合总和 II(Combination Sum II)
		题目描述 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在每个组合中只能 ... 
- leetcode 40. 组合总和 II (python)
		给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在每个组合中只能使用一次. ... 
- Leetcode之回溯法专题-40. 组合总和 II(Combination Sum II)
		Leetcode之回溯法专题-40. 组合总和 II(Combination Sum II) 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使 ... 
- 40. 组合总和 II  + 递归 + 回溯 + 记录路径
		40. 组合总和 II LeetCode_40 题目描述 题解分析 此题和 39. 组合总和 + 递归 + 回溯 + 存储路径很像,只不过题目修改了一下. 题解的关键是首先将候选数组进行排序,然后记录 ... 
- 40组合总和II
		题目:给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合.candidates 中的每个数字在每个组合中只能使用一 ... 
- LeetCode 中级 - 组合总和II(105)
		给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在每个组合中只能使用一次. ... 
- Leetcode题库——40.组合总和II
		@author: ZZQ @software: PyCharm @file: combinationSum2.py @time: 2018/11/15 18:38 要求:给定一个数组 candidat ... 
- 40. 组合总和 II leetcode JAVA
		题目: 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在每个组合中只能使 ... 
- 40. 组合总和 II
		题目描述: 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在每个组合中只 ... 
随机推荐
- gradle执行test任务报错
			起初报错内容: > Task :compileJava FAILEDC:\Users\x\eclipse-workspace\old_code\src\main\java\CookieDemo. ... 
- 网络编程基础【day10】:IO多路复用
			这些名词比较绕口,理解涵义就好.一个epoll场景:一个酒吧服务员(一个线程),前面趴了一群醉汉,突然一个吼一声“倒酒”(事件),你小跑过去给他倒一杯,然后随他去吧,突然又一个要倒酒,你又过去倒上,就 ... 
- python---自定义字段验证
			各个字段类,含正则和验证方法 #字段类 class IPField: REGULAR = "^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4] ... 
- window下nginx负载均衡简单配置-----权重的实现
			下面介绍一个在window下的nginx的负载均衡配置. 需要你在你的电脑上跑两个tomcat.一个8080,一个9080. 需要一个nginx服务器. 需要修改本机的host 注意:我们这里配置不会 ... 
- FASTREPORT COM/ActiveX报表如何保存到C++项目中?
			可以的. VC++ : ... IStream * pStream;CreateStreamOnHGlobal(NULL, true, &pStream);pStream->AddRef ... 
- mysql创建数据库指定编码格式
			CREATE DATABASE `databasename` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 
- C# 部分类使用partial修饰
			using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace pati ... 
- JavaScript之函数存储[摘]
			引用文献:js忍者秘籍 var store = {//demo:函数存储----存储一组独立的函数 nextId:1, cache:{}, add:function(fn){ if(!fn.id){ ... 
- CSS进阶之SASS入门指南
			CSS进阶之SASS入门指南 随着跟着公司学习项目的前端的推进,越来越对好奇了许久的SASS垂涎欲滴,哈哈,可能这个词使用不当,没有关系,就是对SASS有一股神秘的爱!好了,闲话不多说 ... 
- 第16月第9天 opengl glCltDispatchTable
			1.glCltDispatchTable typedef struct _GLTEBINFO { // glCltDispatchTable must be the first field for t ... 
