这是一类题目,最近几天刷题总碰见递归or回溯类型题目。虽然递归解决办法是最基础的方案,但是面对某些题目,有时候还是不能立刻设计出最基础的递归方案---

1 如何设置终止条件。越界?or 满足条件时候的处理

2 分情况往下递归的时候:如何往下写呢?

3 另外对于回溯最重要的 剪枝处理。大多数题目原始递归会超时,剪枝处理可以使得题目运行时间达标

一、回溯应用

给定一个无重复元素的数组 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]
]

解决:因为要存储具体组合方案,这里首先要想到通过回溯方案。

class Solution(object):def combinationSum(self, candidates, target):""":type candidates: List[int]:type target: int:rtype: List[List[int]]"""res = []tmps = []self.dfs(candidates,0,target,tmps,res)return resdef dfs(self,nums,i,target,tmps,res):#越界肯定直接返回if i==len(nums):return#对于满足条件的回溯路径,加入resif sum(tmps)==target:res.append(tmps[:])return#题目要求可以重复选择某个数字#不选第i个数self.dfs(nums,i+1,target,tmps,res)#选第i个数,保证选后值不大于targetif sum(tmps)+nums[i]<=target:tmps.append(nums[i])#重点i 不增加,保证递归后可以继续选nums[i]self.dfs(nums,i,target,tmps,res)tmps.pop(-1)

【39】组合总和--回溯相关推荐

  1. LeetCode 39. 组合总和(回溯+剪枝)

    题目描述 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的数字可以无限 ...

  2. 【LeetCode】【HOT】39. 组合总和(回溯)

    [LeetCode][HOT]39. 组合总和 文章目录 [LeetCode][HOT]39. 组合总和 package hot;import java.util.ArrayList; import ...

  3. Suzy找到实习了吗 Day27 | 回溯进行中:39. 组合总和,40. 组合总和 II,131.分割回文串

    39. 组合总和 题目 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 , ...

  4. 77.组合 | 40.组合总和II | 39.组合总和 | 784.字母大小写全排列

    77.组合 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合. 你可以按 任何顺序 返回答案. 示例 1: 输入:n = 4, k = 2 输出: [   [2,4], ...

  5. LeetCode 39 组合总和

    LeetCode 39 组合总和 题目描述 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合.can ...

  6. leetcode17 电话号码的字母组合,39 组合总和(python)

    文章目录 17. 电话号码的字母组合 分析 代码 通过截图 39. 组合总和 分析 代码 通过截图 代码 通过截图 17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的 ...

  7. 【LeetCode】#39组合总和(Combination Sum)

    [LeetCode]#39组合总和(Combination Sum) 加粗样式 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数 ...

  8. leetcode 39. 组合总和 40. 组合总和 II

    leetcode 39. 组合总和 40. 组合总和 II 组合总和 给定一个无重复元素的正整数数组 candidates 和一个正整数 target ,找出 candidates 中所有可以使数字和 ...

  9. LeetCode 38外观数列39组合总和

    维护公众号:bigsai 回复bigsai分享一些学习资源! 本周上篇 LeetCode 36有效的数独&37解数独(八皇后问题) 外观数列 给定一个正整数 n(1 ≤ n ≤ 30),输出外 ...

  10. leetcode系列--39.组合总和

    leetcode系列–第39题.组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 ...

最新文章

  1. Python OpenCV应用K均值聚类进行颜色量化
  2. 慕课《深入理解计算机系统》袁林枫老师章节测试1-9
  3. iPhone上将短信内容发送到指定邮箱的方法
  4. 交换排序之——冒泡排序(c/c++)
  5. 跟我一起考PMP---项目时间管理
  6. java string转number_Java运算符知识点总结
  7. linux下svn迁移
  8. 实施工程师或技术支持应该熟悉的技能
  9. CF-1207 G.Indie Album(Trie上跑AC自动机)
  10. base64图片保存获取本地路径
  11. 并发编程之Synchronized
  12. element UI 制作模糊搜索框
  13. 参会邀请 - ISWC2020 | 第十九届国际语义网会议
  14. 这4种分析方法,大牛产品经理都在用
  15. 从小编程,到架构师,我们应该具备什么
  16. java的IO总结(一)
  17. 无线降噪耳机推荐,热销火爆的四款降噪耳机推荐
  18. vbs 打开指定浏览器网页
  19. 树莓派开机自启动opencv程序脚本及报错分析及拓展
  20. 大神李沐被曝离职亚马逊,投身大模型创业!网友:“AI 已成创业致富新思路?”...

热门文章

  1. 使用 SPARQL 查询 RDF 数据
  2. 第26课:谈谈我对设计原则的思考
  3. 100部优秀英文小说
  4. 基于JSP网上书店系统的设计与实现
  5. URL 重写模块导致 IIS7 应用程序池自动关闭
  6. 看全新升级的KubeSphere 3.0 如何助力企业在容器混合云时代乘风破浪?
  7. 01_使用jupyter
  8. STM32-SPI的NSS详解
  9. 全栈Linux运维-Linux云计算运维与高级架构班课程 全新自动化运维必学课程
  10. JavaScript学习第十三天