LeetCode如何解决组合总和问题
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章将为大家详细讲解有关LeetCode如何解决组合总和问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。题目给定一个无重复元素的数组 candidates 和
千家信息网最后更新 2026年11月04日LeetCode如何解决组合总和问题
这篇文章将为大家详细讲解有关LeetCode如何解决组合总和问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
题目
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。
candidates 中的数字可以无限制重复被选取。
说明:
所有数字(包括 target)都是正整数。解集不能包含重复的组合。
示例 1:
输入:candidates = [2,3,6,7], target = 7,所求解集为:[ [7], [2,2,3]]
示例 2:
输入:candidates = [2,3,5], target = 8,所求解集为:[ [2,2,2,2], [2,3,3], [3,5]]
提示:
1 <= candidates.length <= 301 <= candidates[i] <= 200candidate 中的每个元素都是独一无二的。1 <= target <= 500
思路
回溯算法 + 剪枝
输入: candidates = [2, 3, 6, 7],target = 7。
候选数组里有 2,如果找到了组合总和为 7 - 2 = 5 的所有组合,再在之前加上 2 ,就是 7 的所有组合;
同理考虑 3,如果找到了组合总和为 7 - 3 = 4 的所有组合,再在之前加上 3 ,就是 7 的所有组合,依次这样找下去。
代码
class Solution { public List> combinationSum(int[] candidates, int target) { int len = candidates.length; List> res = new ArrayList<>(); if(len == 0){ return res; } Deque path = new ArrayDeque<>(); dfs(candidates,0,len,target,path,res); return res; } public void dfs(int[] candidates,int begin,int len,int target,Deque path,List> res){ if(target < 0){ return; } if(target == 0){ res.add(new ArrayList<>(path)); } for(int i = begin; i < len; i++){ path.addLast(candidates[i]); dfs(candidates,i,len,target-candidates[i],path,res); path.removeLast(); } }}
关于"LeetCode如何解决组合总和问题"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
组合
总和
数字
篇文章
输入
问题
就是
数组
更多
示例
不错
实用
独一无二
代码
元素
内容
可以使
思路
整数
文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技园
河南云网互联网络科技有限公司
为想互联网科技怎么样
新华互联网科技学院
港股互联网科技股
高科技与互联网
互联网科技排名
九亚互联网科技
天下捷融互联网科技
海南科技产业互联网平台
蓝色互联网科技
宝灵互联网科技有限公司
晓花互联网科技有限公司网址
互联网金融科技展
银行科技岗属于互联网吗
广州富喜互联网络科技
张召忠谈中国互联网科技
广州三三互联网科技有限公司
盐城市攀科互联网科技有限公司
承德科技产业互联网平台
新华互联网科技
互联网科技公司的优势
朗新科技与工业互联网
互联网科技开发公司
远信互联网科技
互联网科技论文
互联网科技创新服务
佛山市翊博互联网络科技有限公司
宁波跨境商互联网科技有限公司
互联网 科技节活动 微视频大赛