/*题目:给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 示例 1: 输入:candidates = [2,3,6,7], target = 7, 所求解集为: [ [7], [2,2,3] ] 。 * 算法:采用回朔思想 * * * */ package cn.wanggeng.back; public class CombinationSum { public List<List<Integer>> combinationSum(int[] candidates, int target) { List<List<Integer>> res = new ArrayList<List<Integer>>(); List<Integer> list = new ArrayList<Integer>(); dfs(candidates, target, res, list, 0); return res; } public void dfs(int[] candidates, int target, List<List<Integer>> res, List<Integer> list, int index){ if(index == candidates.length){ return; } if(target == 0){ res.add(new ArrayList<Integer>(list)); return; } //直接跳过 dfs(candidates, target, res, list, index + 1); //选择这个数 if(target - candidates[index] >= 0){ list.add(candidates[index]); dfs(candidates, target - candidates[index], res, list, index); list.remove(list.size() - 1); } } }
leetcode---组合和
最新推荐文章于 2024-08-10 17:14:58 发布
该博客介绍了一种使用回溯算法解决寻找数组中无重复元素组合总和为目标数的问题。示例展示了当数组为[2,3,6,7],目标数为7时,如何得到所有可能的组合,如[7]和[2,2,3]。博客内容主要围绕回溯法展开,解释了如何递归地遍历数组并构建解决方案。
摘要由CSDN通过智能技术生成