题目描述

给出一组候选数C和一个目标数T,找出候选数中加起来和等于T的所有组合。

C中的数字在组合中可以被无限次使用

注意:

题目中所有的数字(包括目标数T)都是正整数

你给出的组合中的数字 (a 1, a 2, … , a k) 要按非递增排序 (ie, a 1 ≤ a 2 ≤ … ≤ a k).

结解集中不能包含重复的组合

例如:给定的候选数集是[2,3,6,7],目标数是7

解集是:

[7]

[2, 2, 3]

分析

使用回溯法

java 代码

import java.util.*;

public class Solution {

public ArrayList> combinationSum(int[] candidates, int target) {

ArrayList> res = new ArrayList<>();

if(candidates == null || candidates.length == 0 || target <= 0){return res;}

Arrays.sort(candidates);

combinationSumHelper(candidates,0,target,new ArrayList(),res);

return res;

}

public void combinationSumHelper(int [] candidates,int index,int target,ArrayList cur,ArrayList> res){

if(target == 0){

res.add(new ArrayList (cur));

}else if(target > 0){

for(int i = index; i < candidates.length; i++){

if(candidates[i] > target) break;

cur.add(candidates[i]);

combinationSumHelper(candidates,i,target - candidates[i],cur,res);

cur.remove(cur.size()-1);

}

}

}

}

java combinationsum_Leecode39 combination-sum相关推荐

  1. java sum_java math.sum

    (Math.random() * 100); num2 = (int) (Math.random() * 100); sum = 0; temp = (int) (Math.random() * 10 ...

  2. 40. Combination Sum II 组合总和 II

    给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在每个组合中只能使用一次. ...

  3. 216. Combination Sum III

    /** 216. Combination Sum III * 2016-6-12 by Mingyang* i一定要取到9,虽然大小聪明,想只取到7,但是后面的遍历可能也会遍历到9啊.* 1.长度标准 ...

  4. Combination Sum 和Combination Sum II

    这两道题的基本思路和combination那一题是一致的,也是分治的方法. 其中combination Sum复杂一点,因为每个数可能用多次.仔细分析下,本质上也是一样的.原来是每个数仅两种可能.现在 ...

  5. Java中sum和Sum相同吗,Java认为变量Sum 和sum相同。

    Java认为变量Sum 和sum相同. 更多相关问题 下面( )字常用作表示顺序的第五位. 动力CAN总线总的终端电阻值约为60Ω.( ) 印刷术发明后,刻字用的雕刻刀对汉字的形体发生了深刻的影响,产 ...

  6. 【动态规划】LeetCode 377. Combination Sum IV

    LeetCode 377. Combination Sum IV Solution1: 我的未能AC的答案 题目描述的和前几道题差不多,但实际上不能用DFS来做(会超时),要用动态规划,还是记录一下吧 ...

  7. 【DFS】LeetCode 39. Combination Sum

    LeetCode 39. Combination Sum Solution1: DFS,这个套路要熟记啊! class Solution { public:vector<vector<in ...

  8. 36 数字组合(Combination Sum)

    文章目录 1 题目 2 解决方案 2.1 思路 2.2 图解 2.3 时间复杂度 2.4 空间复杂度 3 源码 1 题目 题目:数字组合(Combination Sum) 描述:给定一个候选数字的集合 ...

  9. JAVA:实现Aliquot Sum等分总和算法(附完整源码)

    JAVA:实现Aliquot Sum等分总和算法 package com.thealgorithms.maths; import java.util.stream.IntStream; public ...

  10. LC39 Combination Sum

    还是利用深搜的思想,注意一个元素可以取无数次.而LC40 Combination Sum II 就有次数限制,有次数限制的情况下可以先判断一个数是否与它前面的数相等,若相等则跳过该元素,直到找到一个数 ...

最新文章

  1. 【蓝桥java】进制与整除之尼姆堆
  2. 漫画:什么是冒泡排序?
  3. 字节跳动获CVPR2021 细粒度图像竞赛双料冠军
  4. download WM6.5.3 SDK
  5. 直接拖动元器件_电子元器件常规检测和判断
  6. Tool/IDE之MinGW:MinGW(C++环境)的简介、安装、使用方法之详细攻略
  7. Java多线程(一)之volatile深入分析
  8. android webview点击返回键返回上一页
  9. 微信AI联手惠普、英特尔,打造PC端人工智能语音助手
  10. 线程池如何保证所有子线程运行完再执行主线程
  11. python画折线图-手把手教你Python yLab的绘制折线图的画法
  12. 串行卧重建19:大对象的演变
  13. ROS之choro功能包
  14. 图书管理系统(前台(vue))
  15. okcc呼叫中心外呼系统使用教程
  16. 洛谷试炼场---新手村
  17. 用PS制作电子签名方法总结
  18. 软件设计实验一 UML建模实验
  19. spring boot 2.1.7启动过程源码解析
  20. LikeLib:区块链+云计算的结合技术现在成熟了吗?

热门文章

  1. R语言构建随机森林模型randomForest分类模型并评估模型在测试集和训练集上的效果(accuray、F1、偏差Deviance):随机森林在Bagging算法的基础上加入了列采样(分枝特征随机)
  2. R语言list.files函数获取文件列表实战
  3. R语言match函数对象之间的匹配实战
  4. python使用正则表达式验证邮箱地址语法有效性
  5. Spark基础知识解答
  6. 影像组学视频学习笔记[44(End)]-带95%置信区间的折线图、Li‘s have a solution and plan.
  7. Java语言程序设计(基础篇)第八章(2 19 36)
  8. 使用Bioconda管理生信软件(以bwa为例)
  9. win10 c盘清理_win10 C盘爆红怎么清理?
  10. flask uwsgi nginx 部署在 ubuntu 上