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

注册网站会有哪些风险wordpress d8电影主题

注册网站会有哪些风险,wordpress d8电影主题,软件商城哪个好,做模型找三视图那些网站文章目录 1. 题目2. 思路及代码实现(Python)2.1 暴力法2.2 回溯法 1. 题目 数字 n n n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示例 1: 输入: n 3 n 3 …

文章目录

  • 1. 题目
  • 2. 思路及代码实现(Python)
    • 2.1 暴力法
    • 2.2 回溯法


1. 题目

数字 n n n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

示例 1:

输入: n = 3 n = 3 n=3
输出: [ " ( ( ( ) ) ) " , " ( ( ) ( ) ) " , " ( ( ) ) ( ) " , " ( ) ( ( ) ) " , " ( ) ( ) ( ) " ] ["((()))","(()())","(())()","()(())","()()()"] ["((()))","(()())","(())()","()(())","()()()"]

示例 2:

输入: n = 1 n = 1 n=1
输出: [ " ( ) " ] ["()"] ["()"]


提示

  • 1 ≤ n ≤ 8 1 \leq n \leq 8 1n8

2. 思路及代码实现(Python)

2.1 暴力法

该思路先生成所有的 2 2 n 2^{2n} 22n 个 “(” 和 “)” 字符串构成的序列,然后检查生成的序列是否有效,一共有 n n n 对括号,共 2 n 2n 2n 个字符,每个位置存在两种不同的选择,因此总共有 2 2 n 2^{2n} 22n 种序列。

为了生成所有序列,可以使用递归。长度为 n n n 的序列就是在长度为 n − 1 n−1 n1 的序列后加一个 “(” 或 “)”。为了检查序列是否有效,我们遍历这个序列,并使用一个变量 b a l bal bal 表示左括号的数量减去右括号的数量。如果在遍历过程中 b a l bal bal 的值小于零,或者结束时 b a l bal bal 的值不为零,那么该序列就是无效的,否则它是有效的。前者说明,遍历一段字符串时出现 “)” 大于 “(” 的数量,显然说明该子串不能成对;而后者说明整个字符串的左右括号数并不相等。

该算法的时间复杂度为: O ( 2 2 n n ) O(2^{2n}n) O(22nn),对于 2 2 n 2^{2n} 22n 个序列中的每一个,对其进行有效性的验证的复杂度为 O ( n ) O(n) O(n)。而空间复杂度除了存储答案组之外,还需要存储探索答案的栈深,复杂度为 O ( n ) O(n) O(n)

class Solution:def generateParenthesis(self, n: int):def generate(A):if len(A) == 2*n:if valid(A):ans.append("".join(A))else:A.append('(')generate(A)A.pop()A.append(')')generate(A)A.pop()def valid(A):bal = 0for c in A:if c == '(': bal += 1else: bal -= 1if bal < 0: return Falsereturn bal == 0ans = []generate([])return ans

执行用时:71 ms
消耗内存:16.54 MB

2.2 回溯法

上述方法是遍历生成所有的可能的序列,然后再进行判断,这里我们发现有可以改进的地方,就是在生成序列时,提前跟踪序列的左右括号的数据,来决定扩展序列时所选择的括号。例如,已有子序列的左括号数量不大于 n n n,则可以放置左括号,如果右括号数量小于左括号数量,可以放置一个右括号。

该算法的复杂度分析依赖于该有效序列可以回溯出 的元素个数。这证明是第 n n n 个卡特兰数 1 n + 1 ( 2 n n ) \dfrac{1}{n+1}\dbinom{2n}{n} n+11(n2n) ,这是由 4 n n n \dfrac{4^n}{n\sqrt{n}} nn 4n 渐近界定的。因此时间复杂度为 O ( 4 n n ) O(\dfrac{4^n}{\sqrt{n}}) O(n 4n)。空间复杂度为保存答案和保存栈深的消耗,为 O ( n ) O(n) O(n)

class Solution:def generateParenthesis(self, n: int):ans = []def backtrack(S, left, right):if len(S) == 2 * n:ans.append(''.join(S))returnif left < n:S.append('(')backtrack(S, left+1, right)S.pop()if right < left:S.append(')')backtrack(S, left, right+1)S.pop()backtrack([], 0, 0)return ans

执行用时:42 ms
消耗内存:16.55 MB


题解来源:力扣官方题解

http://www.yayakq.cn/news/496964/

相关文章:

  • 云建站网址经营网站需要什么费用
  • 多人在线协作网站开发项目网app
  • 淘宝联盟怎么自己做网站推广口碑营销的主要手段有哪些
  • 沈阳营销型网站制作技术快速seo优化
  • 加强网站队伍建设展厅设计费收费标准
  • 网站建设前端工具国外 网站 欣赏
  • 响应式外贸网站价格北京行业网站建设
  • 手机网站费用郑州网络推广哪家口碑好
  • 嘉兴公司网站模板建站小红书seo排名规则
  • 查数据的权威网站做电商没几个能赚钱的
  • 百度网站建设是什么意思wap网站建设兴田德润实惠
  • 深圳建设交易网站网站建设的步骤教程视频
  • 怎么查询网站是否被降权茶叶网站建设的优势
  • 自己切片做网站制作一个赚钱的网站
  • 婚恋网站的渠道网络建设WordPress问答插件路由
  • 网站内如何做论坛东莞网站建设相关技术
  • o2o手机网站建设技术wordpress重新打开多站点
  • 视频网站开发书籍云服务器建设网站用什么系统
  • 可以上传图片的公司网站wordpress 群站
  • 电气网站建设WordPress与odoo接口
  • wordpress网站好用吗电商网络销售是做什么
  • vs做网站怎么加文件夹辽宁建设工程信息网登录不上去
  • 企业企业网站建设广 做网站蓝光电影下载
  • 做网站是做完给钱还是庆阳手机网站设计
  • 建立网站编程重庆网站建设大概需要多少钱
  • 做网站用个人还是企业比较好如何建设运输网站
  • 如何识别网页用什么网站做的静态网站挂马
  • 高校网站建设前言mm 263企业邮箱登录
  • 佳木斯 两学一做 网站四川建设网官网住房和城乡厅
  • 河南网站搭建计算机应用软件开发流程图