Combination_Sum_II
来源:互联网 发布:淘宝售后换货申请 编辑:程序博客网 时间:2024/06/01 21:11
题目描述:
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.
The solution set must not contain duplicate combinations.
(给定一组候选数字(C)和一个目标数(T),在C中找出所有唯一的组合使其总和为T。
C中的每个数字只能在组合中使用一次。
注:
所有数字(包括目标)都是正整数。
解决方案集不得包含重复组合。)
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几乎完全一样,只不过这个允许有重复的元素,以及每个元素只能用一次,所以要在for循环里进行一个重复元素的判断,以及在元素的抽取上不能抽原来已经抽取过的元素。
public class Combination_Sum_II {public static List<List<Integer>> combinationSum2(int[] candidates, int target) {List<List<Integer>> result = new ArrayList();if(target==0||candidates.length==0)return result;Arrays.sort(candidates);List<Integer> mid = new ArrayList<Integer>();solve(result,mid,candidates,target,0);return result; }public static void solve(List<List<Integer>> result,List<Integer> mid,int[] candidates,int target,int index){if(target==0){result.add(new ArrayList(mid));}else{if(target<0)return;//i是指第i个元素for(int i=index;i<candidates.length;i++){if(i>index && candidates[i]==candidates[i-1]) continue; mid.add(candidates[i]);solve(result,mid,candidates,target-candidates[i],i+1);mid.remove(mid.size()-1);}}}public static void main(String[] args) {int candidates[] = {10, 1, 2, 7, 6, 1, 5};int target = 8;List<List<Integer>> result = combinationSum2(candidates,target);for(int i=0;i<result.size();i++){for(int j=0;j<result.get(i).size();j++){System.out.print(result.get(i).get(j)+" ");}System.out.println("\n");}}}
阅读全文
1 0
- Combination_Sum_II
- JVM基础
- 175. Combine Two Tables
- ScaleFace —— 尺度友好人脸检测
- struts2 拦截器
- 算法 1.4.15 快速3-sum
- Combination_Sum_II
- 如何将图片下载到Excel文件
- Tomcat之内存溢出设置JAVA_OPTS
- iOS开发-AR
- jquery获取当前页面url及url参数的方法
- String.ValueOf和toString区别
- 剑指offer_链表逆置
- JavaScript事件---1
- Android异常:分析NoClassDefFoundError: Failed resolution of: Landroid/support/v7/appcompat/R$styleable异常