当前位置: 首页 > news >正文

网站首页样式谭谭心怎么建设网站

网站首页样式,谭谭心怎么建设网站,新浪微博登录网页版,网站建设挣钱么39. 组合总和 思路 根据题意画二叉树 这道题与之前的组合总和的区别在于#xff0c;数组中的数字可以多次使用#xff0c;因此每次递归时的startIndex依旧是从当前的i开始 尝试写代码#xff1a; class Solution:def __init__(self):self.path []self.result []def co…39. 组合总和 思路 根据题意画二叉树 这道题与之前的组合总和的区别在于数组中的数字可以多次使用因此每次递归时的startIndex依旧是从当前的i开始 尝试写代码 class Solution:def __init__(self):self.path []self.result []def combinationSum(self, candidates: List[int], target: int) - List[List[int]]:self.backtracking(candidates, target, 0, 0)return self.resultdef backtracking(self, candidates, target, startIndex, sum):if sum target:self.result.append(self.path[:])return if sum target:returnfor i in range(startIndex, len(candidates)):sum candidates[i]self.path.append(candidates[i])self.backtracking(candidates, target, i, sum)sum - candidates[i]self.path.pop()成功通过 根据代码随想录 可以剪枝先对数组排序然后在for循环中一开始先判断当前sum 当前值是否大于目标值如果是就continue 最终代码 class Solution:def __init__(self):self.path []self.result []def combinationSum(self, candidates: List[int], target: int) - List[List[int]]:candidates.sort()self.backtracking(candidates, target, 0, 0)return self.resultdef backtracking(self, candidates, target, startIndex, sum):if sum target:self.result.append(self.path[:])return for i in range(startIndex, len(candidates)):if sum candidates[i] target:continuesum candidates[i]self.path.append(candidates[i])self.backtracking(candidates, target, i, sum)sum - candidates[i]self.path.pop()40. 组合总和 II 思路 由于给定的数组中包含重复元素最终结果可能出现重复的组合因此需要对最终结果进行去重 在python中每次得到的组合加入result之前先判断下result中是否有该组合 尝试写代码 class Solution:def __init__(self):self.path []self.result []def backtracking(self, candidates, target, startIndex, sum):if sum target:if self.path not in self.result:self.result.append(self.path[:])returnif sum target:return for i in range(startIndex, len(candidates)):sum candidates[i]self.path.append(candidates[i])self.backtracking(candidates, target, i 1, sum)sum - candidates[i]self.path.pop()def combinationSum2(self, candidates: List[int], target: int) - List[List[int]]:self.backtracking(candidates, target, 0, 0)return self.result结果不对去重失败因为每个组合的排列顺序不一样无法通过简单的in来判断。 换一种思路先排序如果i 1 i在这里进行去重 尝试写代码 class Solution:def __init__(self):self.path []self.result []def backtracking(self, candidates, target, startIndex, sum):if sum target:if self.path not in self.result:self.result.append(self.path[:])returnfor i in range(startIndex, len(candidates)):if sum candidates[i] target:continueif i - 1 and i - 1 i:continuesum candidates[i]self.path.append(candidates[i])self.backtracking(candidates, target, i 1, sum)sum - candidates[i]self.path.pop()def combinationSum2(self, candidates: List[int], target: int) - List[List[int]]:candidates.sort()self.backtracking(candidates, target, 0, 0)return self.result测试用例通过但总体超出时间限制 根据代码随想录 注意 剪枝在for循环内先判断如果sum与当前值的和大于目标值break去重如果当前值与上一个值相等continue去重时有两种方法一是i startIndex一是使用used 最终代码使用i startIndex class Solution:def __init__(self):self.path []self.result []def backtracking(self, candidates, target, startIndex, sum):if sum target:self.result.append(self.path[:])returnfor i in range(startIndex, len(candidates)):if i startIndex and candidates[i - 1] candidates[i]:continueif sum candidates[i] target:breaksum candidates[i]self.path.append(candidates[i])self.backtracking(candidates, target, i 1, sum)sum - candidates[i]self.path.pop()def combinationSum2(self, candidates: List[int], target: int) - List[List[int]]:candidates.sort()self.backtracking(candidates, target, 0, 0)return self.result使用used class Solution:def __init__(self):self.path []self.result []def backtracking(self, candidates, target, startIndex, sum, used):if sum target:self.result.append(self.path[:])returnfor i in range(startIndex, len(candidates)):if i 0 and candidates[i - 1] candidates[i] and not used[i - 1]:continueif sum candidates[i] target:breaksum candidates[i]self.path.append(candidates[i])used[i] Trueself.backtracking(candidates, target, i 1, sum, used)sum - candidates[i]self.path.pop()used[i] Falsedef combinationSum2(self, candidates: List[int], target: int) - List[List[int]]:used [False] * len(candidates)candidates.sort()self.backtracking(candidates, target, 0, 0, used)return self.result总结 整体思路正确但是具体写代码的去重逻辑时有错误 131. 分割回文串 思路 画出树形结构图 不知道分割在递归代码中怎么写 根据代码随想录 分割问题和组合问题非常像 要点 切割线可以用startIndex表示即终止条件是当startIndex len(s)判断回文的逻辑放在单层递归中如何表示切割的子串可以用[startIndex, i]表示切割的子串 最终代码 class Solution:def __init__(self):self.path []self.result []def isHui(self, string, start, end):while start end:if string[start] ! string[end]:return Falsestart 1end - 1return Truedef partition(self, s: str) - List[List[str]]:self.backtracking(s, 0)return self.resultdef backtracking(self, s, startIndex):if startIndex len(s):self.result.append(self.path[:])returnfor i in range(startIndex, len(s)):if self.isHui(s, startIndex, i):self.path.append(s[startIndex:i 1])else:continueself.backtracking(s, i 1)self.path.pop()
http://www.zqtcl.cn/news/88567/

相关文章:

  • 烟台公司做网站wordpress help主题
  • 提交网站地图保定网站制作策划
  • 网站建设的单可以刷吗班级网站模板
  • 网站建设惠州中国十大网站建设公司排名
  • 自己做网站要不要租服务器淄博网站建设电话
  • 宁波网站建设制作外贸营销主题怎么写
  • 龙华网站建设设计安徽省建设厅网站人员管理
  • 上海欣扬集团 网站建设内江市建设培训中心网站
  • .net建网站的优势优化大师官方
  • 天津做网站优化的公司WordPress装不上jetpack
  • html网站开发目标设计师网上接单之后不给钱可以报警吗
  • 网站建设山西过年做啥网站致富
  • 增城高端定制网站建设外包加工网注册收费
  • 专做白酒的网站企业网站需要哪些模块
  • 北京 广告 手机网站没有域名装wordpress
  • 免费发布信息的网站平台汽修专业主要学什么
  • 高端网站设计地址找营销推广团队
  • 网站建设会考什么网站后台如何备份
  • 推广自己的网站网站制作的文章
  • 界首网站优化公司专门做衣服的网站
  • 有了页游源代码如何做网站淘宝网站开发用到哪些技术
  • 专题网站模板广西人才网
  • 网站一年的维护费用WordPress添加工单功能
  • 松江品划网站建设维护住建部网站查询系统
  • 苏州建设网站微信公众号网络信息科技有限公司
  • 做那个网站公司网站开发部署
  • 做网站与不做网站的区别南昌县城乡规划建设局官方网站
  • wordpress企业仿站视频教程做微信公众平台的网站吗
  • 公司做网站的钱网银转账用途360提交网站入口
  • 网站开发人员是什么新乡定制网站建设公司