乘风破浪:LeetCode真题_039_Combination Sum

一、前言

    这一道题又是集合上面的问题,可以重复使用数字,来求得几个数之和等于目标。

二、Combination Sum

2.1 问题

2.2 分析与解决

我们可以先将大于该数字的元素去除掉,之后取出一个元素,做减法,将得到的结果再放到集合中比较,直至最后减得结果为零则成功,为负数则失败回退。因此我们可以使用递归、堆栈、队列等来解决。

public class Solution {
public List<List<Integer>> combinationSum(int[] candidates, int target) {
Arrays.sort(candidates);
List<List<Integer>> result = new ArrayList<List<Integer>>();
getResult(result, new ArrayList<Integer>(), candidates, target, 0); return result;
} private void getResult(List<List<Integer>> result, List<Integer> cur, int candidates[], int target, int start){
if(target > 0){
for(int i = start; i < candidates.length && target >= candidates[i]; i++){
cur.add(candidates[i]);
getResult(result, cur, candidates, target - candidates[i], i);
cur.remove(cur.size() - 1);
}//for
}//if
else if(target == 0 ){
result.add(new ArrayList<Integer>(cur));
}//else if
}
}

三、总结

遇到这种问题,首先想到递归,动态规划等方面的知识,然后不断地练习和尝试。

最新文章

  1. Docker搭建便捷的开发者环境
  2. 实习感悟——SQL语句
  3. Yii 框架创建自己的 web 应用
  4. ObjectContext
  5. MySQL中Procedure事务编写基础笔记
  6. 《微信小程序七日谈》- 第七天:不要捡了芝麻丢了西瓜
  7. Linux的nginx环境的vue 部署
  8. javaweb学习总结(四)——Http协议(转)
  9. Nginx安装及配置
  10. 强化学习(十五) A3C
  11. c# 事件的订阅发布Demo
  12. 折腾Java设计模式之解释器模
  13. angular 定时函数
  14. Java中PO、DO、TO、DTO、 VO、 BO、POJO 、DAO的概念
  15. bzoj3730 震波 [动态点分治,树状数组]
  16. winform获取EXE图片
  17. nginx服务器常见错误代码500、501、502、503、504、505
  18. 从网上整理的一些delphi字符串加密解密方法
  19. Unity3d-AngryBots实例解读
  20. python requests接口测试

热门文章

  1. JS和Java正则表达式验证
  2. LVS持久化与超时时间问题分析
  3. Ubuntu 配置Tomcat环境(转载)
  4. MSSQL如何将查询结果拼接成字符串
  5. Iframe 父页面自动获取子页面的高度
  6. 使你的IT职业生涯更上一层楼de14条建议
  7. Join 具体用法
  8. linux 安装mysql8.0
  9. Java虚拟机--内存模型与线程
  10. Android - Dagger2 使用和原理