LeetCode 39. Combination Sum

问题链接

LeetCode 39. Combination Sum

题目解析

给一组数和一个目标值,求和为目标值的组合。数组中的每个数可以取多次。

解题思路

像这种结果要求返回所有符合要求解的题,十有八九都是要利用到递归,而且解题的思路都大同小异,可以发现这些题目发现都是一个套路,都是需要另写一个递归函数。

递归函数中加入三个变量,start记录当前的递归到的下标,answer为一个组合解,res保存所有已经得到的解,每次调用新的递归函数时,此时的target要减去当前数组的的数。

注意一点是需要先将原数组排序,可以避免重复。

参考代码

1class Solution { 2public: 3 vector<vector<int>> combinationSum(vector<int>& candidates, int target) { 4 vector< vector<int> > res; 5 vector<int> answer; 6 sort(candidates.begin(), candidates.end()); 7 solve(candidates, target, res, answer, 0); 8 return res; 9 } 10 11 void solve(vector<int>& candidates, int target, vector< vector<int> >& res, vector<int>& answer, int start) { 12 if(target < 0) return; 13 else if(target == 0) res.push_back(answer); 14 else { 15 for(int i = start; i < candidates.size(); i++) { 16 answer.push_back(candidates[i]); 17 solve(candidates, target-candidates[i], res, answer, i); 18 answer.pop_back(); 19 } 20 } 21 } 22};

相似题目

LeetCode 40. Combination Sum II


LeetCode All in One题解汇总(持续更新中...)

本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.


点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

LeetCode 39. Combination Sum - HelloWorld