博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Combination Sum II
阅读量:6810 次
发布时间:2019-06-26

本文共 2044 字,大约阅读时间需要 6 分钟。

Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.

Each number in C may only be used once in the combination.

Note:

  • All numbers (including target) will be positive integers.
  • Elements in a combination (a1a2, … , ak) must be in non-descending order. (ie, a1 ≤ a2 ≤ … ≤ ak).
  • The solution set must not contain duplicate combinations.

 

For example, given candidate set 10,1,2,7,6,1,5 and target 8

A solution set is: 
[1, 7] 
[1, 2, 5] 
[2, 6] 
[1, 1, 6] 

类似与之前的Combination Sum的DFS,有一点需要注意,如何避免重复。如果两个数相同,我们先用前一个数,只有当前一个数用了,这个数才能使用。

例如:1 1。

当我们要使用第二个1时,我们要检查他的前面一个1是否使用了,当未被使用时第二个1就不能使用。

1 class Solution { 2 private: 3     vector
> ret; 4 vector
a; 5 public: 6 void solve(int dep, int maxDep, vector
&num, int target) 7 { 8 if (target < 0) 9 return;10 11 if (dep == maxDep)12 {13 if (target == 0)14 {15 vector
res;16 for(int i = 0; i < maxDep; i++)17 for(int j = 0; j < a[i]; j++)18 res.push_back(num[i]);19 ret.push_back(res);20 }21 22 return;23 }24 25 for(int i = 0; i <= min(target / num[dep], 1); i++)26 {27 a[dep] = i;28 29 if (i == 1 && dep > 0 && num[dep-1] == num[dep] && a[dep-1] == 0)30 continue;31 32 solve(dep + 1, maxDep, num, target - i * num[dep]);33 }34 }35 36 vector
> combinationSum2(vector
&num, int target) {37 // Start typing your C/C++ solution below38 // DO NOT write int main() function39 sort(num.begin(), num.end());40 a.resize(num.size());41 ret.clear();42 if (num.size() == 0)43 return ret;44 45 solve(0, num.size(), num, target);46 47 return ret;48 }49 };

转载地址:http://siwzl.baihongyu.com/

你可能感兴趣的文章
访问日志不记录静态文件 访问日志切割 静态元素过期时间
查看>>
idea中复制module和module中的蓝色tag出现的方法
查看>>
python中的面相对象
查看>>
Spring缓存注解@Cache使用
查看>>
去除wordpress的category各方法对比
查看>>
traceroute
查看>>
精通汇编语言,有兴趣一起搞破解的请进!
查看>>
一步一步写一个简单通用的makefile(三)
查看>>
asp and javascript: sql server export data to csv and to xls
查看>>
一起谈.NET技术,.NET框架:为什么我们要尽量使用框架内建的功能,而不是重新发明...
查看>>
云计算中我们是否需要LAMP的PaaS?
查看>>
研究称Android内核存在漏洞 黑客可窃取电邮
查看>>
C#缺省参数可以让代码变得更加简洁明了与时俱进心里敞亮了很多了
查看>>
【自然框架】js版的QuickPager分页控件 V2.0
查看>>
poj-2049 Finding Nemo *
查看>>
模块化编程本质探讨
查看>>
利用博客与视频分享和交流知识和经验
查看>>
知道二叉树前序和中序序列打印后序序列
查看>>
js操作dom对象
查看>>
由于未能创建 Microsoft Visual C# 2008 编译器,因此未能打开项目
查看>>