《leetCode》:Combination Sum
来源:互联网 发布:西安 java 软件公司 编辑:程序博客网 时间:2024/06/03 16:40
题目
Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.The same repeated number may be chosen from C unlimited number of times.Note:All numbers (including target) will be positive integers.Elements in a combination (a1, a2, … , ak) must be in non-descending order. (ie, a1 ≤ a2 ≤ … ≤ ak).The solution set must not contain duplicate combinations.For example, given candidate set 2,3,6,7 and target 7, A solution set is: [7] [2, 2, 3]
题目大意:在一个全部是正数的数组找出所有等于target的组合,其中每个数可以用无限次。
实现代码如下:
/*思想:先对数组进行排序,然后进行递归,递归的思想为:if(candidates[i]<target){//将candidates[i]加入到所有其满足combination(candidates,target-candidates[i],i)的List中 for(List<Integer> l:combination(candidates,target-candidates[i],i)){ l.add(0, candidates[i]); result.add(l); } }*/public class Solution { public List<List<Integer>> combination(int []candidates,int target,int start){ if(candidates==null||candidates.length<1){ return null; } List<List<Integer>> result=new ArrayList<List<Integer>>(); //从start位置开始寻找,找出所有满足target的所有情况 for(int i=start;i<candidates.length;i++){ if(candidates[i]<target){//将candidates[i]加入到所有其满足combination(candidates,target-candidates[i],i)的List中 for(List<Integer> l:combination(candidates,target-candidates[i],i)){ l.add(0, candidates[i]); result.add(l); } } else if(candidates[i]==target){ List<Integer> tempList=new ArrayList(); tempList.add(candidates[i]); result.add(tempList); return result;//直接返回就可以了,当然也可以不加这条语句 } else{ break;//如果当前值大于target时,后面的值一定也大于target,因此,退出循环即可。 } } return result; } public List<List<Integer>> combinationSum(int[] candidates, int target) { if(candidates==null||candidates.length<1){ return null; } //第一步:对数组进行排序 Arrays.sort(candidates); return combination(candidates,target,0); }}
AC结果如下
1 0
- [LeetCode] Combination Sum、Combination Sum II
- 【LeetCode】Combination Sum && Combination Sum II
- leetcode之Combination Sum && Combination Sum II
- leetcode Combination Sum &Combination Sum II
- leetcode-combination sum and combination sum II
- Leetcode:Combination Sum与Combination Sum II
- leetcode Combination Sum VS Combination Sum II
- [Leetcode]Combination Sum &&Combination Sum II
- LeetCode Combination Sum & Combination Sum II
- leetcode | Combination Sum & Combination Sum 2
- LeetCode: Combination Sum
- LeetCode: Combination Sum II
- LeetCode: Combination Sum
- LeetCode: Combination Sum II
- [LeetCode]Combination Sum
- [LeetCode]Combination Sum II
- LeetCode Combination Sum
- LeetCode Combination Sum II
- 最大公共子串(C语言实现)
- 文章标题
- Modbus-RTU入门篇
- Qt中delete的问题
- PHP - 多维数组
- 《leetCode》:Combination Sum
- 问题1:java问题--某局小游戏结束后怎么重新开始?
- C#通过adb传输安卓设备数据
- leetcode笔记:Best Time to Buy and Sell Stock IV
- 快速排序
- popupWindow 的使用
- Android退出应用方法总结
- 我的投资案例(1)-偶遇阿丁特,重仓好狗狗
- acm奇数魔方阵