Combination Sum | Java最短代码实现
2016-03-15 17:37
501 查看
原题链接:39. Combination Sum
拓展博文:Combination Sum II | Java最短代码实现
【思路】
基本思路是先排好序,然后每次递归中把剩下的元素一一加到结果集合中,并且把目标减去加入的元素,然后把剩下元素(包括当前加入的元素)放到下一层递归中解决子问题。算法复杂度因为是NP问题,所以自然是指数量级的:
cases passed. Runtime: 7
ms Your runtime beats 57.38% of javasubmissions.
欢迎优化!
拓展博文:Combination Sum II | Java最短代码实现
【思路】
基本思路是先排好序,然后每次递归中把剩下的元素一一加到结果集合中,并且把目标减去加入的元素,然后把剩下元素(包括当前加入的元素)放到下一层递归中解决子问题。算法复杂度因为是NP问题,所以自然是指数量级的:
public List<List<Integer>> combinationSum(int[] candidates, int target) { ArrayList<List<Integer>> result = new ArrayList<List<Integer>>(); Arrays.sort(candidates); ArrayList<Integer> tmp = new ArrayList<Integer>(); findCandidates(candidates, target, 0, tmp, result); return result; } public void findCandidates(int[] candidates, int target, int curIndex, ArrayList<Integer> tmp, ArrayList<List<Integer>> result) { if (target == 0) result.add(new ArrayList<Integer>(tmp)); for (int i = curIndex; i < candidates.length && target >= candidates[i]; i++) { tmp.add(candidates[i]); findCandidates(candidates, target - candidates[i], i, tmp, result); tmp.remove(new Integer(candidates[i])); } }168 / 168 test
cases passed. Runtime: 7
ms Your runtime beats 57.38% of javasubmissions.
欢迎优化!
相关文章推荐
- 在Eclipse中设置自动生成javadoc注释
- [Java代码] 使用Maven管理Java项目
- maven3常用命令、java项目搭建、web项目搭建详细图解
- [Java学习] 小型社交平台,能发帖、查看、评论、删除帖子等功能
- java 线程池原理及几种线程池详解
- struts2接收前台参数的3个方法
- 总结java编程常用的快捷键
- 关于JAVA中URL传递中文参数,取值是乱码的解决办法
- JAVA开发之Eclipse常用的快捷键
- rxjava源码分析
- Leetcode:205. Isomorphic Strings(JAVA)
- java操作hdfs实例
- 转载一篇写的不错的java ClassLoader工作机制的文章
- 基于java web的博客平台(五)
- [Java代码] 算法练习08:Sunday算法
- 深入理解Java的接口和抽象类
- 基于java web的博客平台(四)
- SpringMVC中使用Interceptor拦截器
- Java数据类型字节数
- SpringMVC拦截器(资源和权限管理)-login拦截