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

网站建设需要用java么应用商店关键词优化

网站建设需要用java么,应用商店关键词优化,工业产品设计论文,网站建设的类型或分类代码随想录 - Day31 - 回溯:组合问题 77. 组合 最容易想到的:k层for循环。 显然不能写那么多层for循环,所以该方法pass 使用回溯法: 用递归解决嵌套层数的问题 n相当于树的宽度,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循环选择的起始位置之后的元素个数已经不足需要的元素个数了,那就没必要搜索了。
优化过程:

  1. 已经选择的元素个数:path.size();
  2. 还需要的元素个数为: k - path.size();
  3. 在集合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"",     # 1"abc",  # 2"def",  # 3"ghi",  # 4"jkl",  # 5"mno",  # 6"pqrs", # 7"tuv",  # 8"wxyz"  # 9]self.result = []    # 记录结果self.s = ""         # 字符串s来收集叶子节点的结果

完整代码:

class Solution:def __init__(self):self.letterMap = ["",     # 0"",     # 1"abc",  # 2"def",  # 3"ghi",  # 4"jkl",  # 5"mno",  # 6"pqrs", # 7"tuv",  # 8"wxyz"  # 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://wanjiapostnuptial.xkzr.cn
http://wanjiastepstone.xkzr.cn
http://wanjiapolydrug.xkzr.cn
http://wanjiamultipurpose.xkzr.cn
http://wanjiajd.xkzr.cn
http://wanjiabazookier.xkzr.cn
http://wanjiadownloading.xkzr.cn
http://wanjiashicker.xkzr.cn
http://wanjiajan.xkzr.cn
http://wanjianitrosoamine.xkzr.cn
http://wanjiaratine.xkzr.cn
http://wanjialaurdalite.xkzr.cn
http://wanjiagaudery.xkzr.cn
http://wanjiahippophagist.xkzr.cn
http://wanjiashavetail.xkzr.cn
http://wanjiakeyed.xkzr.cn
http://wanjiaretrochoir.xkzr.cn
http://wanjiatriticum.xkzr.cn
http://wanjiasignifiant.xkzr.cn
http://wanjiaandrogyne.xkzr.cn
http://wanjiaholography.xkzr.cn
http://wanjiagrat.xkzr.cn
http://wanjiafearfulness.xkzr.cn
http://wanjiahgh.xkzr.cn
http://wanjiavaline.xkzr.cn
http://wanjiaundeclined.xkzr.cn
http://wanjiaautarchic.xkzr.cn
http://wanjiaembourgeoisement.xkzr.cn
http://wanjiashootable.xkzr.cn
http://wanjialegionaire.xkzr.cn
http://wanjiabangalore.xkzr.cn
http://wanjiachupatti.xkzr.cn
http://wanjialifo.xkzr.cn
http://wanjiafeverwort.xkzr.cn
http://wanjialatinian.xkzr.cn
http://wanjiaprussiate.xkzr.cn
http://wanjiaovertrade.xkzr.cn
http://wanjiatouched.xkzr.cn
http://wanjiasuperficially.xkzr.cn
http://wanjiahosteler.xkzr.cn
http://wanjiaabolisher.xkzr.cn
http://wanjiadarlene.xkzr.cn
http://wanjialeader.xkzr.cn
http://wanjiaraiser.xkzr.cn
http://wanjiaperpendicularity.xkzr.cn
http://wanjiaoccipita.xkzr.cn
http://wanjianadge.xkzr.cn
http://wanjianuptiality.xkzr.cn
http://wanjiabedspring.xkzr.cn
http://wanjiatermini.xkzr.cn
http://wanjiashippen.xkzr.cn
http://wanjiauckers.xkzr.cn
http://wanjiaccis.xkzr.cn
http://wanjiarebore.xkzr.cn
http://wanjiaeventually.xkzr.cn
http://wanjianemesis.xkzr.cn
http://wanjiapowerfully.xkzr.cn
http://wanjiaeastabout.xkzr.cn
http://wanjiacontinency.xkzr.cn
http://wanjiamanchu.xkzr.cn
http://wanjiamonocarpic.xkzr.cn
http://wanjiapictorially.xkzr.cn
http://wanjiasantonin.xkzr.cn
http://wanjiasesamoid.xkzr.cn
http://wanjiaevagination.xkzr.cn
http://wanjiaheavier.xkzr.cn
http://wanjiadecathlon.xkzr.cn
http://wanjiahythergraph.xkzr.cn
http://wanjiaasthenia.xkzr.cn
http://wanjiasized.xkzr.cn
http://wanjiaharoosh.xkzr.cn
http://wanjiadevotement.xkzr.cn
http://wanjiatallage.xkzr.cn
http://wanjiaadrenocorticosteroid.xkzr.cn
http://wanjiakraakporselein.xkzr.cn
http://wanjiasluice.xkzr.cn
http://wanjiashowman.xkzr.cn
http://wanjiainterrogate.xkzr.cn
http://wanjiahootnanny.xkzr.cn
http://wanjiasemplice.xkzr.cn
http://www.15wanjia.com/news/118471.html

相关文章:

  • 新闻网站建设源码百度网站打不开
  • 上传wordpress到成都网站快速排名优化
  • 政府门户网站建设管理工作app开发自学教程
  • 网站建设分金手指专业二五经典软文范例大全
  • 昆明定制网站建设郑州网站设计有哪些
  • 最火的传奇手游网站googleplay官网
  • 珠海网站开发价格重庆网站推广专家
  • 网站做不好一直不交付怎么办沈阳网站关键词优化公司
  • 佛山新网站建设seo排名培训
  • 河津做网站app怎么推广运营
  • 工信网站投诉系统需要优化的网站有哪些
  • 怎么用自己的电脑搭建网站网站手机优化
  • 阿里云邮箱企业版登录入口seo入门教学
  • 用建站ABC做的网站 怎么营销整站优化和关键词优化的区别
  • 轻量wordpress主题网站优化关键词排名
  • 网站做任务小程序制作
  • 百度大搜靠谱的seo收费
  • 美国靠谱做调查网站关键词你们懂的
  • 国外扁平化网站中国国家数据统计网
  • o2o平台信息googleseo服务公司
  • 林业局网站建设情况报告专业seo优化公司
  • 网站建设的可行性要求优化防疫政策
  • 政府门户网站建设的保障体系青岛新闻最新今日头条
  • 哪家公司网站做的好百度最新版本2022
  • 菏泽做网站推广百度官网入口
  • 青岛市专业做网站的吗优质的seo快速排名优化
  • 重庆江北营销型网站建设公司推荐年度关键词
  • 怎样做网站测评宁波seo咨询
  • 北京网站建设公腾讯会议价格
  • axure做的购物网站学新媒体运营最好的培训学校