java combinationsum_Leecode39 combination-sum
题目描述
给出一组候选数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相关推荐
- java sum_java math.sum
(Math.random() * 100); num2 = (int) (Math.random() * 100); sum = 0; temp = (int) (Math.random() * 10 ...
- 40. Combination Sum II 组合总和 II
给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的每个数字在每个组合中只能使用一次. ...
- 216. Combination Sum III
/** 216. Combination Sum III * 2016-6-12 by Mingyang* i一定要取到9,虽然大小聪明,想只取到7,但是后面的遍历可能也会遍历到9啊.* 1.长度标准 ...
- Combination Sum 和Combination Sum II
这两道题的基本思路和combination那一题是一致的,也是分治的方法. 其中combination Sum复杂一点,因为每个数可能用多次.仔细分析下,本质上也是一样的.原来是每个数仅两种可能.现在 ...
- Java中sum和Sum相同吗,Java认为变量Sum 和sum相同。
Java认为变量Sum 和sum相同. 更多相关问题 下面( )字常用作表示顺序的第五位. 动力CAN总线总的终端电阻值约为60Ω.( ) 印刷术发明后,刻字用的雕刻刀对汉字的形体发生了深刻的影响,产 ...
- 【动态规划】LeetCode 377. Combination Sum IV
LeetCode 377. Combination Sum IV Solution1: 我的未能AC的答案 题目描述的和前几道题差不多,但实际上不能用DFS来做(会超时),要用动态规划,还是记录一下吧 ...
- 【DFS】LeetCode 39. Combination Sum
LeetCode 39. Combination Sum Solution1: DFS,这个套路要熟记啊! class Solution { public:vector<vector<in ...
- 36 数字组合(Combination Sum)
文章目录 1 题目 2 解决方案 2.1 思路 2.2 图解 2.3 时间复杂度 2.4 空间复杂度 3 源码 1 题目 题目:数字组合(Combination Sum) 描述:给定一个候选数字的集合 ...
- JAVA:实现Aliquot Sum等分总和算法(附完整源码)
JAVA:实现Aliquot Sum等分总和算法 package com.thealgorithms.maths; import java.util.stream.IntStream; public ...
- LC39 Combination Sum
还是利用深搜的思想,注意一个元素可以取无数次.而LC40 Combination Sum II 就有次数限制,有次数限制的情况下可以先判断一个数是否与它前面的数相等,若相等则跳过该元素,直到找到一个数 ...
最新文章
- 【蓝桥java】进制与整除之尼姆堆
- 漫画:什么是冒泡排序?
- 字节跳动获CVPR2021 细粒度图像竞赛双料冠军
- download WM6.5.3 SDK
- 直接拖动元器件_电子元器件常规检测和判断
- Tool/IDE之MinGW:MinGW(C++环境)的简介、安装、使用方法之详细攻略
- Java多线程(一)之volatile深入分析
- android webview点击返回键返回上一页
- 微信AI联手惠普、英特尔,打造PC端人工智能语音助手
- 线程池如何保证所有子线程运行完再执行主线程
- python画折线图-手把手教你Python yLab的绘制折线图的画法
- 串行卧重建19:大对象的演变
- ROS之choro功能包
- 图书管理系统(前台(vue))
- okcc呼叫中心外呼系统使用教程
- 洛谷试炼场---新手村
- 用PS制作电子签名方法总结
- 软件设计实验一 UML建模实验
- spring boot 2.1.7启动过程源码解析
- LikeLib:区块链+云计算的结合技术现在成熟了吗?
热门文章
- R语言构建随机森林模型randomForest分类模型并评估模型在测试集和训练集上的效果(accuray、F1、偏差Deviance):随机森林在Bagging算法的基础上加入了列采样(分枝特征随机)
- R语言list.files函数获取文件列表实战
- R语言match函数对象之间的匹配实战
- python使用正则表达式验证邮箱地址语法有效性
- Spark基础知识解答
- 影像组学视频学习笔记[44(End)]-带95%置信区间的折线图、Li‘s have a solution and plan.
- Java语言程序设计(基础篇)第八章(2 19 36)
- 使用Bioconda管理生信软件(以bwa为例)
- win10 c盘清理_win10 C盘爆红怎么清理?
- flask uwsgi nginx 部署在 ubuntu 上