Suzy找到实习了吗 Day27 | 回溯进行中:39. 组合总和,40. 组合总和 II,131.分割回文串
39. 组合总和
题目
给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。
candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。
solution
一定要注意:收集结果的时候,因为是shallow copy,所以不能append(path)
class Solution:def __init__(self):self.res=[]self.path=[]def backtracking(self,candidates,targetsum,cursum,startindex):if cursum>targetsum:returnif cursum==targetsum:self.res.append(self.path[:])returnfor i in range(startindex,len(candidates)):cursum+=candidates[i]self.path.append(candidates[i])self.backtracking(candidates,targetsum,cursum,i)# 为了可重复利用 需要把已经选过的元素带上,所以这块是i不是i+1cursum-=candidates[i]self.path.pop()returndef combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:self.backtracking(candidates,target,0,0)return self.res
40. 组合总和 II
题目
给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用 一次 。注意:解集不能包含重复的组合。
我的问题
我不会去重
Eg: candidates = [10,1,2,7,6,1,5], target = 8
candidate集合中有重复元素!!!!!!!
[1,2,6]=[2,6,1]
solution
去看视频,used数组真的很巧妙!!!!!!!!!!!!!!!!
class Solution:def __init__(self):self.res=[]self.path=[]def backtracking(self,candidates,target,cursum,startindex,used):if cursum>target:returnif cursum==target:self.res.append(self.path[:])returnfor i in range(startindex,len(candidates)):if i>=1 and candidates[i]==candidates[i-1] and used[i-1]==0:continuecursum+=candidates[i]used[i]=1self.path.append(candidates[i])self.backtracking(candidates,target,cursum,i+1,used)cursum-=candidates[i]used[i]=0self.path.pop()returndef combinationSum2(self, candidates: List[int], target: int) -> List[List[int]]:candidates.sort()#print(candidates)used=[0]*len(candidates)self.backtracking(candidates,target,0,0,used)return self.res
131.分割回文串(好难噢 想不到 虽然是模板题)
题目
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。
返回 s 所有可能的分割方案。
示例: 输入: “aab” 输出: [ [“aa”,“b”], [“a”,“a”,“b”] ]
solution
class Solution:def __init__(self):self.res=[]self.path=[]def ishuiwen(self,s):if s==[]:return Falseif s==s[::-1]:return Truereturn Falsedef backtracking(self,s,startindex):#print(s)if startindex>=len(s):self.res.append(self.path[:])returnfor i in range(startindex,len(s)):if self.ishuiwen(s[startindex:i+1]): #应该是i+1,左闭右开self.path.append(s[startindex:i+1])self.backtracking(s,i+1)self.path.pop()else:continuereturndef partition(self, s: str) -> List[List[str]]:self.backtracking(s,0)return self.res
我的bug
if self.ishuiwen(s[startindex:i+1]): #应该是i+1,左闭右开
这一行一开始写成了i
Suzy找到实习了吗 Day27 | 回溯进行中:39. 组合总和,40. 组合总和 II,131.分割回文串相关推荐
- 131. 分割回文串(回溯算法)
给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 .返回 s 所有可能的分割方案. 回文串 是正着读和反着读都一样的字符串. 示例 1: 输入:s = "aab&quo ...
- leetcode 131. 分割回文串(dp+回溯)
给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 .返回 s 所有可能的分割方案. 回文串 是正着读和反着读都一样的字符串. 示例 1: 输入:s = "aab&quo ...
- LeetCode 131. 分割回文串(回溯)
文章目录 1. 题目 2. 回溯 1. 题目 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. 返回 s 所有可能的分割方案. 示例: 输入: "aab" 输出: ...
- LeetCode 131. 分割回文串【字符串,回溯算法】
131. 分割回文串 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 .返回 s 所有可能的分割方案. 回文串 是正着读和反着读都一样的字符串. 示例 1: 输入:s = &q ...
- 【回溯法】python 实现 全排列,子集,组合问题、分割回文串
leetcode39.40.47. 78. 77.131 目录 47:全排列 78:子集 39组合总和 40 组合总和 77组合 131 分割回文串 47:全排列 全排列问题: 使用回溯法,需要注意 ...
- leetcode131. 分割回文串(回溯)
给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. 返回 s 所有可能的分割方案. 示例: 输入: "aab" 输出: [ ["aa",&quo ...
- Suzy找到实习了吗 Day24 | 回溯算法开始啦:回溯的理论知识,77组合(有一个问题没有解决)
回溯算法理论 回溯算法解决的问题 组合问题 切割问题 子集问题 排列问题 棋盘问题 算法模板 函数没有返回值 业界给回溯算法命名:backtracking 算法伪代码模板 def backtracki ...
- Suzy找到实习了吗Day25 | 回溯算法进行时:216. 组合总和 III,17电话号码
216. 组合总和 III 题目 找出所有相加之和为 n 的 k 个数的组合,且满足下列条件: 只使用数字1到9 每个数字 最多使用一次 返回 所有可能的有效组合的列表 .该列表不能包含相同的组合两次 ...
- Suzy找到实习了吗 Day 1 | 704. 二分查找、27. 移除元素
Suzy找到实习了吗 | 704. 二分查找.27. 移除元素 Leetcode 704:二分搜索 收获 Divide and conquer Recursive relation Python 3 ...
最新文章
- .net 小问题集合
- JS框架_(JQuery.js)纯css3进度条动画
- 快速pow和sqrt的小技巧 hdu4282
- python写抽奖转盘_[宜配屋]听图阁
- php启动端口修改,PHP_启动服务端口报错
- android中进行https连接的方式的详解
- 用python画图的作品_中学教案-python绘图
- Java之导入Excel 后端篇
- 伪装Apache版本防止入侵Web服务器
- 无法访问_win10纯净版提示无法访问文件或目录损坏的问题
- 机原自检——第7章 机械的运转及其速度波动的调节
- python计算平均值画折线图_【中年阿姨python入门】绘制折线图
- 如何用Word编辑参考文献(转)
- 【无人机三维路径规划】基于A算法解决三维路径规划问题含危险障碍地形含Matlab源码
- Excel分组行转列
- 【计算机毕业设计】123网上商城系统的设计与实现
- 玩转JetBot自动驾驶 (一)准备DIY零件清单
- JavaWeb图书商城 网上书城
- 关于My Sql如何导入数据
- 当今社会22大流行骗术曝光-请大家警惕
热门文章
- B1192 [HNOI2006]超级英雄Hero 二分图匹配
- 瓦克美国多晶硅基地爆炸 多晶硅及硅片或涨价
- 关于在打败C魔王前经常被背刺这件事(C语言常见问题描述及解决方案和原因)
- go语言微服务项目,基础篇--go4-聊天室
- 尼康相机测试软件mac版,Nikon Camera Control
- viper4android io错误,Go之Viper
- python破解md5_python怎么使用md5加密解密
- 通道(channel)
- JAVA面向对象编程(2)
- 【白话机器学习】算法理论+实战之决策树