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

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

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] 

---

check dup

check target ==0 first!!!

public class Solution {    public ArrayList
> combinationSum2(int[] num, int target) { Arrays.sort(num); ArrayList
> rst = new ArrayList
>(); ArrayList
list = new ArrayList
(); helper(num, 0, target, list, rst); return rst; } private void helper(int[] arr, int index, int target, ArrayList
list, ArrayList
> rst) { if (target == 0) { // Done ArrayList
l = new ArrayList
(list); rst.add(l); return; } if (index < 0 || index >= arr.length || target < 0) return; for (int i = index; i < arr.length; ++i) { if (arr[i] > target) break; // check dup if(i>index && arr[i]==arr[i-1]) continue; list.add(arr[i]); helper(arr, i+1, target - arr[i], list, rst); list.remove(list.size() - 1); } }}

 

转载于:https://www.cnblogs.com/ycled/p/3332784.html

你可能感兴趣的文章
【题解】青蛙的约会
查看>>
IO流
查看>>
mybatis调用存储过程,获取返回的游标
查看>>
设计模式之装饰模式(结构型)
查看>>
面向对象的设计原则
查看>>
Swift3.0服务端开发(三) Mustache页面模板与日志记录
查看>>
【转】 FPGA设计的四种常用思想与技巧
查看>>
EntityFrameWork 实现实体类和DBContext分离在不同类库
查看>>
新手算法学习之路----二叉树(在一个二叉查找树中插入一个节点)
查看>>
autopep8
查看>>
GIT在Linux上的安装和使用简介
查看>>
基于C#编程语言的Mysql常用操作
查看>>
s3c2440实验---定时器
查看>>
MyEclipse10安装SVN插件
查看>>
[转]: 视图和表的区别和联系
查看>>
Regular Experssion
查看>>
图论例题1——NOIP2015信息传递
查看>>
uCOS-II中的任务切换-图解多种任务调度时机与问题
查看>>
CocoaPods的安装和使用那些事(Xcode 7.2,iOS 9.2,Swift)
查看>>
Android 官方新手指导教程
查看>>