40 Combination Sum II
2015-09-05 14:06
281 查看
/* * 先对candidates中的元素按从小到大排序,能节省时间 */ public class Solution { List<List<Integer>> res = new ArrayList<List<Integer>>(); public List<List<Integer>> combinationSum2(int[] candidates, int target) { if(candidates==null||candidates.length==0) return res; int len = candidates.length; int[] visited = new int[len]; Arrays.fill(visited, 0); Arrays.sort(candidates); dfs(new ArrayList<Integer>(), candidates, 0, target, visited); return res; } public void dfs(List<Integer> list, int[] candidates, int sum, int target, int visited[]){ int len = candidates.length; for(int i=0;i<len;++i){ if(visited[i]==1) continue; if(sum + candidates[i]==target){ List<Integer> tmp = new ArrayList<Integer>(list); tmp.add(candidates[i]); Collections.sort(tmp); if(!res.contains(tmp)){ res.add(tmp); } }else if(sum + candidates[i] < target){ List<Integer> tmp = new ArrayList<Integer>(list); tmp.add(candidates[i]); int[] tv = visited.clone(); tv[i] = 1; dfs(tmp, candidates, sum + candidates[i], target, tv); }else{ /* * 因为已经把candidates数组按从小到大排序,所以当sum + candidates[i] > target *后,candidates的i以后的元素都不用试了,肯定不满足 */ break; } } } }
相关文章推荐
- 4.7.5 Efficient Construction of LALR Parsing Tables
- Java文件上传下载
- JBOSS学习-一些基本配置了解
- Standard Compilation & OSR
- 早起5个迹象说明体内湿寒
- 财付通安全性存疑:资金频被盗刷
- Codeforces 567C Geometric Progression (离散 + DP)
- sizeof求结构体所占空间大小
- Spring学习之注入方式
- Stanford机器学习---第十讲. 数据降维
- 粒子群算法1
- 【more effective c++读书笔记】【第5章】技术(4)——Smart Pointers(智能指针)
- spring初接触
- bzoj1699:排队
- 【more effective c++读书笔记】【第5章】技术(4)——Smart Pointers(智能指针)
- 字符,字节和编码
- Stanford机器学习---第九讲. 聚类
- php fgets函数读取多余的空格解决
- 第11章 线程
- 华为OJ 寻找大小字母个数