Combination Sum II
来源:互联网 发布:怎么下载天人网络电视 编辑:程序博客网 时间:2024/05/29 11:19
不是two sum,所以还是深搜
每个数的搜索深度是它重复的次数,例如有两个1,搜索就是0,1,2三次
其他和combination sum相同
public class Solution {
public ArrayList<ArrayList<Integer>> combinationSum2(int[] num, int target) {Arrays.sort(num);
return DFS(num,target,0,num.length);
}
public static ArrayList<ArrayList<Integer>> DFS(int[] num, int target,int begin,int end)
{
ArrayList<ArrayList<Integer>> rst=new ArrayList<ArrayList<Integer>>();
ArrayList<ArrayList<Integer>> rst_sub=new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> rstentry=new ArrayList<Integer>();
ArrayList<Integer> entry_prefix=new ArrayList<Integer>();
int n=end-begin;
if(n==0)
return rst;
if(n==1 && num[begin]==target)
{
rstentry.add(num[begin]);
rst.add(rstentry);
return rst;
}
if(num[begin]>target)
{
return rst;
}
int tmp=num[begin];
int same=1;
for(; begin+1<end && num[begin+1]==tmp;begin++)
same++;
int i=0,j;
while(i<=same)
{
if(i>0)
entry_prefix.add(num[begin]);
if(target-i*num[begin]==0)
{
rst.add(entry_prefix);
break;
}
rst_sub=DFS(num,target-i*num[begin],begin+1,end);
for(j=0;j<rst_sub.size();j++)
{
rstentry=new ArrayList<Integer>();
rstentry.addAll(entry_prefix);
rstentry.addAll(rst_sub.get(j));
rst.add(rstentry);
}
i++;
}
return rst;//*/
}
}
0 0
- Combination Sum && Combination Sum II
- Combination Sum Combination Sum II
- Combination Sum II
- LeetCode: Combination Sum II
- LeetCode: Combination Sum II
- [LeetCode]Combination Sum II
- LeetCode Combination Sum II
- [Leetcode] Combination Sum II
- Combination Sum II
- [LeetCode] Combination Sum II
- LeetCode Combination Sum II
- [Leetcode] Combination Sum II
- Combination Sum II
- LeetCode: Combination Sum II
- Combination Sum II
- leetcode Combination Sum II
- Combination Sum II
- [LeetCode]Combination Sum II
- Qt 二进制文件读写
- HDU 2114 Calculate S(n)
- Android学习笔记1--源代码下载
- AXIS2:如何发布webservice .
- Java泛型
- Combination Sum II
- 如何创建maven web工程
- 解决Eclipse中Logcat无输出信息问题
- 本人的新博客【hy31337】www.cnblogs.com/elves/
- classes12.jar,ojdbc14.jar,ojdbc5.jar和ojdbc6.jar的区别,之间的差异
- 基于PhoneGap+JQuery Mobile+ArcGISJavascript API实现
- 进程调度算法
- Axis环境配置
- 方法的重载