leetcode:39. Combination Sum
来源:互联网 发布:手机做淘宝客是骗? 编辑:程序博客网 时间:2024/06/04 19:44
Given a set of candidate numbers (C) (without duplicates) 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.
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]
]
public class Solution { static List<List<Integer>> ans ; static int[] candidates; public List<List<Integer>> combinationSum(int[] candidates, int target) { ans = new ArrayList<>(); Solution.candidates = candidates; Arrays.sort(candidates); ArrayList<Integer> tmp = new ArrayList<>(candidates.length); dfs(tmp, 0, target); return ans; } public static void dfs(List<Integer> tmp, int curPos, int curVal){ if(curVal == 0){ List<Integer> t = new ArrayList<>(tmp.size() * 2); for(int i : tmp){ t.add(i); }ans.add(t); } else if(curVal < 0 || curPos >= candidates.length || candidates[curPos] > curVal){ return ; } else{ dfs(tmp, curPos+1, curVal);// // tmp.add(candidates[curPos]);// dfs(tmp, curPos + 1, curVal - candidates[curPos]);// tmp.remove(tmp.size() - 1); int i = 0; do{ ++i; tmp.add(candidates[curPos]); curVal -= candidates[curPos]; dfs(tmp, curPos + 1, curVal); }while(curVal > 0); while(i-- > 0){ tmp.remove(tmp.size() - 1); curVal += candidates[curPos]; } } }}
0 0
- [LeetCode]39.Combination Sum
- LeetCode --- 39. Combination Sum
- LeetCode 39.Combination Sum
- [Leetcode] 39. Combination Sum
- Leetcode-39.Combination Sum
- LeetCode 39. Combination Sum
- [LeetCode]39. Combination Sum
- 39. Combination Sum LeetCode
- [leetcode] 39. Combination Sum
- leetcode 39. Combination Sum
- 【leetcode】 39. Combination Sum
- LeetCode 39. Combination Sum
- leetcode 39. Combination Sum
- LeetCode 39. Combination Sum
- LeetCode *** 39. Combination Sum
- LeetCode 39. Combination Sum
- leetcode 39. Combination Sum
- LeetCode - 39. Combination Sum
- Java统计目录文件下行数的总和,注释行数的总和,空行数总和
- JavaScript数组array及常用字符串处理
- Camera HAL(Camera Preview)
- Java常用排序算法/程序员必须掌握的8大排序算法
- sqlserver数据库权限
- leetcode:39. Combination Sum
- java基础学习API之其它类和总结 六-5
- 一个简单的代码,讲明白javascript的线程
- 程序员如何用Java排序
- Python --- range()函数与array()函数
- Python 学习笔记(一)
- eclipseDTD如何引入(例子出自"研磨struts2")
- docker-machine常用命令
- Java常见内存溢出异常分析