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

怎么进网站源码的后台seo教程网站优化推广排名

怎么进网站源码的后台,seo教程网站优化推广排名,手机怎么自己制作图片,2345浏览器网址大全力扣22.括号生成【medium】 力扣39.组合总和【medium】 力扣40.组数总和Ⅱ【medium】 一、力扣22.括号生成【medium】 题目链接:力扣22.括号生成 视频链接:灵茶山艾府 1、思路 可以理解成2n个位置选n个位置放置左括号 从输入的视角:枚举当前…

力扣22.括号生成【medium】
力扣39.组合总和【medium】
力扣40.组数总和Ⅱ【medium】

一、力扣22.括号生成【medium】

题目链接:力扣22.括号生成
在这里插入图片描述

视频链接:灵茶山艾府

1、思路

  • 可以理解成2n个位置选n个位置放置左括号

  • 从输入的视角:枚举当前位置填左括号还是右括号?本质上是「选或不选」,把填左括号视作「选」,填右括号视作「不选」。(也可以反过来)。

  • 时间复杂度: O ( n ∗ C m n ) O(n*C_m^n) O(nCmn)

    • 分析回溯问题的时间复杂度,有一个通用公式:路径长度×搜索树的叶子数。但由于左右括号的约束,实际上没有这么多叶子,根据 Catalan 数,只有 C m n n + 1 \frac{C_m^n}{n+1} n+1Cmn 个叶子节点,所以实际的时间复杂度为 O(C_m^n)。此外,根据阶乘的 Stirling 公式,时间复杂度也可以表示为 O ( 4 n n ) O( \frac{4^n}{\sqrt{n}}) O(n 4n)

2、代码

class Solution:def generateParenthesis(self, n: int) -> List[str]:m = n * 2ans =[]path = [''] * mdef dfs(i, open):if i == m:ans.append(''.join(path))returnif open < n:path[i] = '('dfs(i+1, open + 1)if i - open < open :path[i] = ')'dfs(i+1, open)dfs(0,0)return ans

二、力扣39.组合总和【medium】

题目链接:力扣39.组合总和
在这里插入图片描述
视频链接:代码随想录
题解链接:灵茶山艾府

1、思路

  • 和组数总和Ⅲ有点类似,那边数组的长度是固定的并且不可以重复,这便是不固定可以重复使用,这边也多设置一个参数left表示还差多少完成target的目标。
  • 终止条件:当left == 0就可以存储答案
  • 单层逻辑:选或者不选,**注意这边选的话递归还是本次的i,**由于是可以重复使用的,这和之前的回溯递归不一样的地方
  • 时间复杂度: O ( n ∗ 2 n ) O(n*2^n) O(n2n) ,注意这只是复杂度的上界,因为剪枝的存在,真实的时间复杂度远小于此

2、代码

class Solution:def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:ans = []path = []def dfs(i:int, left:int):if left == 0:ans.append(path.copy())returnif i == len(candidates) or left < 0:return# 不选idfs(i+1, left)path.append(candidates[i])# 这边允许元素重复使用,所以递归的话是i而不是i+1dfs(i, left - candidates[i]) # 这边i不是数本身,而是数组的索引path.pop()dfs(0, target)return ans

三、力扣40.组数总和Ⅱ【medium】

题目链接:力扣40.组数总和Ⅱ
在这里插入图片描述

视频链接:代码随想录
题解链接:灵茶山艾府

1、思路

  • 本题和39题的区别是,我们的候选仓库 candidates 中的元素是可以重复的,里面的元素却不可以重复使用,
  • 所以实际上这边不选某个元素的时候要特殊处理,比上一题来的复杂
  • 我们可以先排序一下,比较好处理重复元素,并且可以做到一个优化剪枝
  • 时间复杂度: O ( n ∗ 2 n ) O(n*2^n) O(n2n) ,注意这只是复杂度的上界,因为剪枝的存在,真实的时间复杂度远小于此

2、代码

"""
注意:本题和39题的区别是,我们的候选仓库 candidates 中的元素是可以重复的,里面的元素却不可以重复使用,所以实际上这边不选某个元素的时候要特殊处理,比上一题来的复杂
"""
class Solution:def combinationSum2(self, candidates: List[int], target: int) -> List[List[int]]:candidates.sort() # 先从小到大排个序n = len(candidates)ans = []path = []def dfs(i:int, left:int):if left == 0:ans.append(path.copy())returnif i == len(candidates):returnx = candidates[i]if left < x:returnpath.append(x)dfs(i+1, left - x)path.pop()# 不选 x,那么后面所有等于 x 的数都不选# 如果不跳过这些数,会导致「选 x 不选 x'」和「不选 x 选 x'」这两种情况都会加到 ans 中,这就重复了i += 1while i < n and candidates[i] == x:i += 1dfs(i,left)dfs(0,target)return ans

3、代码问题

  • 这边我一开始只注意到不可以重复使用,直接在上一题的基础上快速修改了,就报错了……
  • 这道题的元素仓库本来就有重复的元素,所以我需要处理这个细节,否则我的ans中就有很多重复答案。

http://www.dtcms.com/wzjs/324539.html

相关文章:

  • 南通江苏网站建设付费内容网站
  • 网站开发是前端还是后台网站建设杭州
  • 免费建网站哪个平台好工具刷网站排刷排名软件
  • 微信微网站是什么案例成都网站优化公司
  • 武汉婚纱摄影网站设计360指数
  • 野外美食网站设计欣赏网络媒体广告代理
  • 深圳做网站有哪些最全的百度网盘搜索引擎
  • 河南专业做网站标题关键词优化技巧
  • 东营建站公司信息流广告优秀案例
  • 西宁网站建设开发公司拼多多关键词怎么优化
  • 顺义重庆网站建设建一个自己的网站
  • 武安信息港日照seo优化
  • dreamweaver如何下载郑州优化公司有哪些
  • wordpress 添加钩子seo学习
  • wpf做的网站武汉十大技能培训机构
  • 自己做网站怎么弄网站制作的步骤
  • 南京做网站的长沙seo优化推广公司
  • 厚街网站建设价格专业seo推广
  • 越秀网站建设推广互联网推广的好处
  • 这个网站做海外推广百度排名点击软件
  • 有和wind一样做用网站注册百度账号免费
  • 移动端响应式网站怎么做百度营销
  • 提升网站权重长春网站建设解决方案
  • 甘肃做网站价格宁波网站推广怎么做
  • 北京网站制作定制bt磁力
  • 怀化冰山涯IT网站建设公司百度推广开户流程
  • 如何在外管局网站做延期收汇免费合作推广
  • 安卓app下载平台电脑优化大师有用吗
  • 问卷星网站开发市场调查问卷我想在百度发布信息
  • 深圳网站营销推广公司电话微信推广软件有哪些