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

网上商城排名seo推广网络

网上商城排名,seo推广网络,网站建设得花多钱,微信公众号排版编辑力扣131.分割回文串【medium】 力扣.20组合——剪枝优化【medium】 力扣216.组数总和Ⅲ【medium】 一、力扣131.分割回文串【medium】 题目链接:力扣131.分割回文串 视频链接:代码随想录、灵茶山艾府 1、思路 回文串是向前和向后读都相同的字符串——用…

力扣131.分割回文串【medium】
力扣.20组合——剪枝优化【medium】
力扣216.组数总和Ⅲ【medium】

一、力扣131.分割回文串【medium】

题目链接:力扣131.分割回文串
在这里插入图片描述
视频链接:代码随想录、灵茶山艾府

1、思路

  • 回文串是向前和向后读都相同的字符串——用一个-1倒排就可以判断
  • 从答案角度出发:枚举回文字串/逗号结束的位置
  • 递归函数参数:i表示当前处理到字符串的起始位置
  • 终止条件:切割线切到了字符串最后面,说明找到了一种切割方法,i=n
  • 单层搜索的逻辑:遍历所有可能的结束位置j,分割子串s[i.j+1];判断是否回文,是在添加到路径,递归考虑剩余的字串怎么切割,最后pop
  • 注意这边并不需要找到一个path就添加到ans中,而是要都切割完才可以。

在这里插入图片描述

  • 时间复杂度: O ( n ∗ 2 n ) O(n*2^n) O(n2n),其中 n 为 s 的长度。答案的长度至多为逗号子集的个数,即 O ( 2 n ) O(2 ^n) O(2n),因此会递归 O ( 2 n ) O(2 ^n) O(2n)次,再算上判断回文和加入答案时需要 O ( n ) O(n) O(n) 的时间,所以时间复杂度为 O ( n ∗ 2 n ) O(n*2^n) O(n2n)

2、代码

class Solution:def partition(self, s: str) -> List[List[str]]:n = len(s)ans = []path = []def dfs(i): # i 表示回文子串结束的位置 / 表示当前处理到字符串的起始位置# 如果起始位置已经到达字符串末尾,说明当前分割完成if i == n:ans.append(path.copy())return# 遍历所有可能的结束位置j,分割子串s[i..j]for j in range(i, n):t = s[i:j+1]if t == t[::-1]:path.append(t)dfs(j+1) # 递归处理剩余子串s[j.+1.n-1]path.pop()  # 回溯,移除当前子串,尝试其他分割方式dfs(0)return ans 

3、代码问题

  • 太难了,理解的还不到位

二、力扣77.组合——剪枝优化【medium】

题目链接:力扣77.组合——剪枝优化
在这里插入图片描述

视频链接:代码随想录

1、思路

  • 如果还可以选的数i的个数比还需要选的数d = k - len(path)来的小,那就不用继续往下迭代,直接结束
  • 时间复杂度: O ( k ∗ C n k ) O(k*C_n^k) O(kCnk)

2、代码

  • 答案视角
class Solution:def combine(self,n:int,k:int) -> List[List[int]]:ans = []path = []def dfs(i):d = k - len(path)if i < d :returnif len(path) == k:ans.append(path.copy())returnfor j in range(i, 0, -1):path.append(j)dfs(j-1)path.pop()dfs(n)return ans
  • 输出视角
class Solution:def combine(Self,n:int,k:int) -> List[List[int]]:ans = []path = []def dfs(i):d = k - len(path)if d == 0:ans.append(path.copy())return# 不选 i ;如果i比d来的小就必须选了if i > d:dfs(i-1)path.append(i)dfs(i-1)path.pop()dfs(n)return ans

3、代码问题

  • if i < d : return 可以删掉,在for循环那里的终止区间改成 d-1

三、力扣216.组数总和Ⅲ【medium】

题目链接:力扣216.组数总和Ⅲ【medium】
left =x300
视频链接:代码随想录

1、思路

  • 和组合那题类似,这边多一个目标:k数之和为n,我们可以给dfs多设置一个参数target,表示我们剩余的目标之和
  • 剪枝:如果 t<0 ,说明已经超过目标n,终止.如果 t 大到剩下的 d 个数加起来都不够t > (i * 2 - d + 1) * d // 2,终止
  • 时间复杂度: O ( k ∗ C 9 k ) O(k*C_9^k) O(kC9k)

2、代码

class Solution:def combinationSum3(self, k: int, n: int) -> List[List[int]]:ans = []path = []def dfs(i,t):d = k - len(path)if t < 0 or t > (i * 2 - d + 1) * d // 2:returnif len(path) == k:ans.append(path.copy())returnfor j in range(i, d-1, -1):path.append(j)dfs(j-1, t-j)path.pop()dfs(9,n)return ans  

3、代码问题

  • 这边不用再额外判断t是否等于0,因为if的那两个判断的就是t大于零或者t小于零的情况

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

相关文章:

  • php动态网站设计作业成品吉林网络公司
  • 网站建设的工作流程百度一下浏览器下载安装
  • 黄埔网站建设优化seo网站页面排名优化
  • wordpress主题在哪个文件夹seo优化排名是什么
  • 做微秀的网站推广网页怎么做的
  • 网站开发合作合同范本百度风云榜各年度小说排行榜
  • 网站备案 法人代表免费网站在线客服软件
  • 在线做视频的网站培训心得体会2000字
  • 烟台网站建设seo在哪里推广自己的产品
  • 做网站需要会什么条件账户竞价托管公司
  • 增城有什么网站做招聘的优化师是做什么的
  • 网站做友链亚马逊关键词快速优化
  • 淄博网站建设公司模板免费下载网站
  • 重庆百度竞价排名seo外包收费
  • 哪里有做网站的怎样做网络销售平台
  • 网站怎么做电子合同网站seo综合诊断
  • 昆明做网站建设的公司排名百度知道个人中心
  • 微信小程序可以做音乐网站吗百度搜索网址大全
  • 太原网站开发团队seo全称英文怎么说
  • 用网站源码怎么做网站目前搜索引擎排名
  • 成都门户网站建设网络营销广告名词解释
  • 网站建设策划书(建设前的市场分析)免费软件下载网站有哪些
  • 网站开发设计制作推广网店运营的工作内容
  • 合肥做网站的公司有哪些免费的网络推广渠道
  • 商城小程序价格百度seo快速排名优化
  • 云服务器可以做网站吗百度自媒体怎么注册
  • wordpress缩略图解决方案河北seo基础教程
  • 营销推广型网站2023年7月最新新闻摘抄
  • 黄冈商城网站建设推广手段和渠道有哪些
  • 做宣传网站的公司刚刚刚刚刚刚好痛