用Java语言写一段代码,实现给定一个数组nums=[2,3,5]和一个固定的值target=8。找出数组nums中所有可以使数字和为target的组合(数字可重复)。
时间: 2023-04-08 14:03:02 浏览: 113
从一组数中找出和为某数的所有组合
5星 · 资源好评率100%
好的,这是一个关于Java语言的问题,我可以回答。以下是代码实现:
```
import java.util.ArrayList;
import java.util.List;
public class Solution {
public List<List<Integer>> combinationSum(int[] nums, int target) {
List<List<Integer>> res = new ArrayList<>();
backtrack(res, new ArrayList<>(), nums, target, 0);
return res;
}
private void backtrack(List<List<Integer>> res, List<Integer> tempList, int[] nums, int remain, int start) {
if (remain < 0) return;
else if (remain == 0) res.add(new ArrayList<>(tempList));
else {
for (int i = start; i < nums.length; i++) {
tempList.add(nums[i]);
backtrack(res, tempList, nums, remain - nums[i], i);
tempList.remove(tempList.size() - 1);
}
}
}
}
```
这段代码使用回溯法来实现,具体实现过程可以参考注释。
阅读全文