【39】组合总和--回溯
这是一类题目,最近几天刷题总碰见递归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】组合总和--回溯相关推荐
- LeetCode 39. 组合总和(回溯+剪枝)
题目描述 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的数字可以无限 ...
- 【LeetCode】【HOT】39. 组合总和(回溯)
[LeetCode][HOT]39. 组合总和 文章目录 [LeetCode][HOT]39. 组合总和 package hot;import java.util.ArrayList; import ...
- Suzy找到实习了吗 Day27 | 回溯进行中:39. 组合总和,40. 组合总和 II,131.分割回文串
39. 组合总和 题目 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 , ...
- 77.组合 | 40.组合总和II | 39.组合总和 | 784.字母大小写全排列
77.组合 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合. 你可以按 任何顺序 返回答案. 示例 1: 输入:n = 4, k = 2 输出: [ [2,4], ...
- LeetCode 39 组合总和
LeetCode 39 组合总和 题目描述 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合.can ...
- leetcode17 电话号码的字母组合,39 组合总和(python)
文章目录 17. 电话号码的字母组合 分析 代码 通过截图 39. 组合总和 分析 代码 通过截图 代码 通过截图 17. 电话号码的字母组合 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的 ...
- 【LeetCode】#39组合总和(Combination Sum)
[LeetCode]#39组合总和(Combination Sum) 加粗样式 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数 ...
- leetcode 39. 组合总和 40. 组合总和 II
leetcode 39. 组合总和 40. 组合总和 II 组合总和 给定一个无重复元素的正整数数组 candidates 和一个正整数 target ,找出 candidates 中所有可以使数字和 ...
- LeetCode 38外观数列39组合总和
维护公众号:bigsai 回复bigsai分享一些学习资源! 本周上篇 LeetCode 36有效的数独&37解数独(八皇后问题) 外观数列 给定一个正整数 n(1 ≤ n ≤ 30),输出外 ...
- leetcode系列--39.组合总和
leetcode系列–第39题.组合总和 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 ...
最新文章
- Python OpenCV应用K均值聚类进行颜色量化
- 慕课《深入理解计算机系统》袁林枫老师章节测试1-9
- iPhone上将短信内容发送到指定邮箱的方法
- 交换排序之——冒泡排序(c/c++)
- 跟我一起考PMP---项目时间管理
- java string转number_Java运算符知识点总结
- linux下svn迁移
- 实施工程师或技术支持应该熟悉的技能
- CF-1207 G.Indie Album(Trie上跑AC自动机)
- base64图片保存获取本地路径
- 并发编程之Synchronized
- element UI 制作模糊搜索框
- 参会邀请 - ISWC2020 | 第十九届国际语义网会议
- 这4种分析方法,大牛产品经理都在用
- 从小编程,到架构师,我们应该具备什么
- java的IO总结(一)
- 无线降噪耳机推荐,热销火爆的四款降噪耳机推荐
- vbs 打开指定浏览器网页
- 树莓派开机自启动opencv程序脚本及报错分析及拓展
- 大神李沐被曝离职亚马逊,投身大模型创业!网友:“AI 已成创业致富新思路?”...