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

手机建站图片网页设计入门基础知识

手机建站图片,网页设计入门基础知识,汽车之家网页,欧米茄手表价格官网代码随想录 - Day31 - 回溯#xff1a;组合问题 77. 组合 最容易想到的#xff1a;k层for循环。 显然不能写那么多层for循环#xff0c;所以该方法pass 使用回溯法#xff1a; 用递归解决嵌套层数的问题 n相当于树的宽度#xff0c;k相当于树的深度。 找到最深处的叶子节…代码随想录 - Day31 - 回溯组合问题 77. 组合 最容易想到的k层for循环。 显然不能写那么多层for循环所以该方法pass 使用回溯法 用递归解决嵌套层数的问题 n相当于树的宽度k相当于树的深度。 找到最深处的叶子节点即为找到一个结果把结果收集起来就是最终答案。 class Solution:def combine(self, n: int, k: int) - List[List[int]]:result [] # 存放结果集self.backtracking(n, k, 1, [], result)return resultdef backtracking(self, n, k, startIndex, path, result):if len(path) k:result.append(path[:])returnfor i in range(startIndex, n 1): # 需要优化的地方path.append(i) # 处理节点self.backtracking(n, k, i 1, path, result)path.pop() # 回溯撤销处理的节点剪枝优化 可以剪枝的地方就在递归中每一层的for循环所选择的起始位置。 如果for循环选择的起始位置之后的元素个数已经不足需要的元素个数了那就没必要搜索了。 优化过程 已经选择的元素个数path.size();还需要的元素个数为: k - path.size();在集合n中至多要从该起始位置 : n - (k - path.size()) 1开始遍历 为什么有个1呢因为包括起始位置我们要是一个左闭的集合。 class Solution:def combine(self, n: int, k: int) - List[List[int]]:result [] # 存放结果集self.backtracking(n, k, 1, [], result)return resultdef backtracking(self, n, k, startIndex, path, result):if len(path) k:result.append(path[:])returnfor i in range(startIndex, n - (k - len(path)) 2): # 剪枝优化path.append(i) # 处理节点self.backtracking(n, k, i 1, path, result)path.pop() # 回溯撤销处理的节点216. 组合总和 III 找到和为n的k个数的组合且k在1~9之间 class Solution:def combinationSum3(self, k: int, n: int) - List[List[int]]:result [] # 存放结果集self.backtracking(n, k, 0, 1, [], result)return resultdef backtracking(self, targetSum, k, currentSum, startIndex, path, result):if currentSum targetSum: # 剪枝操作return # 如果path的长度等于k但currentSum不等于targetSum则直接返回if len(path) k and currentSum targetSum:result.append(path[:])returnfor i in range(startIndex, 10): # 剪枝优化currentSum ipath.append(i) # 处理节点self.backtracking(targetSum, k, currentSum, i 1, path, result)currentSum - ipath.pop() # 回溯撤销处理的节点剪枝优化 已选元素总和如果已经大于n了那么往后遍历就没有意义了直接剪掉。 class Solution:def combinationSum3(self, k: int, n: int) - List[List[int]]:result [] # 存放结果集self.backtracking(n, k, 0, 1, [], result)return resultdef backtracking(self, targetSum, k, currentSum, startIndex, path, result):if currentSum targetSum: # 剪枝操作return # 如果path的长度等于k但currentSum不等于targetSum则直接返回if len(path) k and currentSum targetSum:result.append(path[:])returnfor i in range(startIndex, 9 - (k - len(path)) 2): # 剪枝优化currentSum ipath.append(i) # 处理节点self.backtracking(targetSum, k, currentSum, i 1, path, result)currentSum - ipath.pop() # 回溯撤销处理的节点在一开始判断的时候不能把if currentSum targetSum写在if len(path) k里面。如果写在里面就忽略掉了currentSum targetSum len(path) ! k的情况。 17. 电话号码的字母组合 使用map或定义一个二维数组实现数字和字母的映射 def __init__(self):self.letterMap [, # 0, # 1abc, # 2def, # 3ghi, # 4jkl, # 5mno, # 6pqrs, # 7tuv, # 8wxyz # 9]self.result [] # 记录结果self.s # 字符串s来收集叶子节点的结果完整代码 class Solution:def __init__(self):self.letterMap [, # 0, # 1abc, # 2def, # 3ghi, # 4jkl, # 5mno, # 6pqrs, # 7tuv, # 8wxyz # 9]self.result []self.s []def backtracking(self, digits, index):if index len(digits):self.result.append(.join(self.s))returndigit int(digits[index])letters self.letterMap[digit]for i in range(len(letters)):self.s.append(letters[i])self.backtracking(digits, index 1)self.s.pop()def letterCombinations(self, digits: str) - List[str]:if len(digits) 0:return self.resultself.backtracking(digits, 0)return self.result由于题目中限定了2~9所以并未考虑0和1没有对应字母的情况。在实际问题中应当考虑到。 小总结 做了这几道题后发现它们的解题代码都有共通之处于是自己总结了一下。 def __init__(): # 需要的时候才写# 定义全局变量def backtracking(self, 参数1, 参数2, ...):# 回溯算法if 相等:result.append()returnfor ...:# 回溯代码self.backtracking() # 递归# 回溯代码def function():# 排除某些情况self.backtracking() # 递归return result
http://www.hkea.cn/news/14415196/

相关文章:

  • 学生做网站教程建网站中企动力
  • 网站浮动广告代码网站建设员岗位职责
  • 男生为女生做网站郑州网站设计见效快
  • wap网站 链接微信南阳网站优化排名
  • 上海站群优化wordpress内容修改
  • 不需要网站备案的广告联盟青岛网站建设多少钱
  • 做帖子的网站有哪些自适应影视网站模板
  • 开源网站建设工具永远免费的域名
  • 太原市建设银行网站网站建设实践总结
  • 纪检网站建设动态主题网站排名西安
  • 泰安润泽建设工程有限公司网站公司做网站要多长时间审核
  • 网站建设先进事迹西安企业网站开发
  • 网站开发工具 售价北京做网站的大公司有哪些
  • 青岛需要做网站的公司有哪些北京网站制作收费标准
  • 做仿网站的书html访问人数统计代码
  • 专业网站推荐18款禁用软件黄app免费
  • 河北pc端网站建设企业网站东莞网站建设制作
  • 做阀门网站效果怎么样英文网站 模板
  • 成品网站w灬源码1688用自己的名字设计头像
  • 越秀公司网站建设郑州网站关键词优化公司
  • 工厂的网站在哪里做的php做的购物网站
  • 网站session 验证网上书店网站建设规划书
  • 网站建设流程公司十堰秦楚网公众号
  • 在网站里面如何做支付工具网站关闭了域名备案
  • 手机搞笑网站模板下载安装seo系统
  • 精品网站建设费用 地址磐石网络长沙网站推广系统
  • 广州网站推广哪家强做wordpress模板赚钱
  • 哪些网站专门做细胞的东莞做网站做seo优化外包网络公司
  • 简约网站建设公司wordpress移植数据库
  • 深圳wap网站建设公司铁岭网站建设移动网站