用java实现combin函数_【算法-Java实现】组合总和

本文介绍了如何使用Java实现组合总和算法,通过搜索回溯的方法解决力扣39题。给定一个无重复元素的数组和目标数,找出所有能使数组元素和为目标数的组合。文章提供了详细的算法分析和递归函数结构,并给出完整代码实现。
摘要由CSDN通过智能技术生成

【算法-Java实现】组合总和

一.问题描述:

给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。

比如:

输入:[2,3,6,7];输出:[[7], [2, 2, 3]]

输入:[3,4,5,6,7,8,9];输出:[[8], [4, 4], [3, 5]]

本题来源:力扣39

二.问题解答:

思路:搜索回溯

递归函数结构体:

dfs(int[] candidates,int target,List ans,List combine,int index)

candidates:输入的数组;

target:目标值;

ans:返回的结果;

combine:返回结果的子结果(可行解);

index:数组下标(从0开始进行递归)

使用递归,两种情况:

1.dfs( candidates, target, ans,combine,index+1):每一次递归都对index加1,接着进行递归;

递归终止条件:index==candidates.length;

2.对元素大小进行判断,若candidates[index]

进行递归:dfs(candidate

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值