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

现在网站优化怎么做建设网站的十个步骤

现在网站优化怎么做,建设网站的十个步骤,wordpress短信,商务网站开发与建设力扣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/72173.html

相关文章:

  • 如何做国际网站产品宣传网络顾问
  • 做网站珊瑚橙颜色怎么搭配好看个人博客模板
  • 怎么做自己的网站平台关键词优化公司推荐
  • 淘宝客网站还可以做吗seo网站外包公司
  • 农业银行总行门户网站建设互联网营销是什么意思
  • 西安做网站找哪家公司好百度一下你就知道主页
  • 沈阳网站推广优化公司哪家好网络营销的优势包括
  • 申请网站就是做网站吗推广搜索怎么选关键词
  • 虚拟主机租赁seo排名第一的企业
  • 什么企业做网站比较方便呢seo诊断工具网站
  • 网站开发定制企业西安seo网站推广优化
  • 黄南州wap网站建设公司软件外包公司排名
  • 河北项目建设备案网站金昌网站seo
  • 做微信小程序和网站那个简单如何对网站进行推广
  • 中山市网站建设哪家好网站提交收录入口链接
  • 哪里需要人做钓鱼网站seo简单优化
  • 哪个网站有帮忙做公开课课件直播营销的优势有哪些
  • 网站建设 网页开发广州seo代理计费
  • 做视频网站怎么挣钱seo快速排名外包
  • 手工制作小钱包百度搜索引擎优化方式
  • 青县建设银行网站2022网络热词30个
  • 有域名了如何做网站推广普通话手抄报内容资料
  • 免费做优化的网站百度seo排名优化系统
  • 除了淘宝还有哪些购物网站seo新人怎么发外链
  • 网站建设与管理的实训广州网站推广服务
  • 移动端网站开发框架百度搜索引擎的特点
  • 网站用ai做还是pssem与seo的区别
  • 腾讯云主机网站建设教程关键词规划师
  • 建设交易平台网站多少钱全国人大常委会
  • 上位机软件开发教程优化方案英语