leetcode40——Combination Sum II

原创 2018年04月17日 17:05:15

题目大意:在给出的数组中找出组合(数组中的数字不可以重复使用,组合不可以重复),使得组合中数字之和等于目标数字

分析:dfs。和上一道的区别在于数组中的数字不能重复使用。那么就要注意dfs时下一层不能再加当前下标位的数字了,也就是说dfs的下标要加一。

          还有一个区别就是这道题的数组中有重复数字存在,所以在dfs时处理过相同数字的第一个之后,在当前层就要跳过后续的几个相同数字,否则会出现重复答案。但要保证dfs下一层时仍然会继续处理剩下的相同数字,因为他们在更深层仍然可选。

代码:

class Solution {
public:
vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {
vector<vector<int>> result;
vector<int> path;
sort(candidates.begin(), candidates.end());
dfs(0,0,target,candidates,path,result);
return result;
}
void dfs(int pos, int sum, int target, vector<int>& candidates, vector<int>& path, vector<vector<int>>& result) {
if (sum == target) {
result.push_back(path);
return;
}
if (sum > target) {
return;
}
for (int i = pos;i < candidates.size();i++) {
path.push_back(candidates[i]);
dfs(i + 1, sum + candidates[i], target, candidates, path, result);
path.pop_back();
while (i < candidates.size() - 1 && candidates[i] == candidates[i + 1])

i++;  //剔除重复的i,否则答案中会出现相同解

}
}
};

汇编语言程序设计II

-
  • 1970年01月01日 08:00

[leetcode]40. Combination Sum II ,python实现【medium难度】

Combination sum 2.python实现
  • zl87758539
  • zl87758539
  • 2016-06-16 17:37:04
  • 788

LeetCode40:Combination Sum II

Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in...
  • u012501459
  • u012501459
  • 2015-07-06 21:17:58
  • 879

(Java)LeetCode-40. Combination Sum II

Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in...
  • u012848330
  • u012848330
  • 2016-08-11 23:33:03
  • 357

leetCode 40.Combination Sum II(组合总和II) 解题思路和方法

Combination Sum II Given a collection of candidate numbers (C) and a target number (T), find all ...
  • xygy8860
  • xygy8860
  • 2015-07-09 23:11:43
  • 738

40. Combination Sum II

此题是Combination Sum的扩展,但是每个元素最多只能选用一次。由于有重复元素的存在,比如数组为[1(1),1(2),2,3],target = 6,可能出现重复结果1(1),2,3 和 1...
  • wusecaiyun
  • wusecaiyun
  • 2015-07-22 09:20:00
  • 546

Combination Sum II -- LeetCode

原题链接: http://oj.leetcode.com/problems/combination-sum-ii/  这道题跟Combination Sum非常相似,不了解的朋友可以先看看,唯一的区...
  • linhuanmars
  • linhuanmars
  • 2014-03-13 04:30:39
  • 15820

40. Combination Sum II(重要)

Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in...
  • gao1440156051
  • gao1440156051
  • 2016-07-15 21:36:12
  • 502

【LeetCode】Combination Sum I & II 解题报告

【Combination Sum I】 Given a set of candidate numbers (C) and a target number (T), find all unique ...
  • ljiabin
  • ljiabin
  • 2014-12-16 11:06:12
  • 6582

[leetcode] 040. Combination Sum II (Medium) (C++)

[leetcode] 040. Combination Sum II (Medium) (C++)
  • hcbbt
  • hcbbt
  • 2015-08-08 08:33:00
  • 1605
收藏助手
不良信息举报
您举报文章:leetcode40——Combination Sum II
举报原因:
原因补充:

(最多只允许输入30个字)