Leetcode90: Generate Parentheses

2024-08-28 19:48

本文主要是介绍Leetcode90: Generate Parentheses,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.

For example, given n = 3, a solution set is:

"((()))", "(()())", "(())()", "()(())", "()()()"

该问题解的个数就是卡特兰数,但是现在不是求个数,而是要将所有合法的括号排列打印出来。

       该问题和《编程之美》的买票找零问题一样,通过买票找零问题我们可以知道,针对一个长度为2n的合法排列,第1到2n个位置都满足如下规则:左括号的个数大于等于右括号的个数。所以,我们就可以按照这个规则去打印括号:假设在位置k我们还剩余left个左括号和right个右括号,如果left>0,则我们可以直接打印左括号,而不违背规则。能否打印右括号,我们还必须验证left和right的值是否满足规则,如果left>=right,则我们不能打印右括号,因为打印会违背合法排列的规则,否则可以打印右括号。如果left和right均为零,则说明我们已经完成一个合法排列,可以将其打印出来。通过深搜,我们可以很快地解决问题.

class Solution {
public:void generate(int leftNum,int rightNum,string s,vector<string> &result)  {  if(leftNum==0&&rightNum==0)  {  result.push_back(s);  }  if(leftNum>0)  {  generate(leftNum-1,rightNum,s+'(',result);  }  if(rightNum>0&&leftNum<rightNum)  {  generate(leftNum,rightNum-1,s+')',result);  }  }  vector<string> generateParenthesis(int n) {vector<string> res;string s;generate(n, n, s, res);return res;}
};


这篇关于Leetcode90: Generate Parentheses的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1115718

相关文章

856. Score of Parentheses

856. Score of Parentheses class Solution:def scoreOfParentheses(self, s: str) -> int:stack=[]i=0for c in s:if c=='(':stack.append(c)else:score=0while stack[-1]!='(':score+=stack.pop()stack.pop()score

leetcode#32. Longest Valid Parentheses

题目 Given a string containing just the characters '(' and ')', find the length of the longest valid (well-formed) parentheses substring. For "(()", the longest valid parentheses substring is "()", wh

LeetCode - 32. Longest Valid Parentheses

32. Longest Valid Parentheses  Problem's Link  ---------------------------------------------------------------------------- Mean:  给定一个由'('和')'组成的字符串,求最长连续匹配子串长度. analyse: 定义一个stack<pair

LeetCode 22 Generate Parentheses

题意: 用n组小括号,生成所有满足括号匹配的序列。 思路: 我用了比较粗暴的方式,用set不断迭代答案,每次迭代使得括号组数+1直到n为止。 还有一种方法是dfs构造,因为长度已经确定,所以每个位置要么放(要么放),利用前缀和维护括号匹配即可。 代码: class Solution {public:vector <string> generateParenthesis

PostgreSQL 中的 `generate_series` 函数使用

1. 概述 在 PostgreSQL 中,generate_series 是一个非常实用的内置函数,它能够根据给定的起始值和结束值生成一系列连续的数字。这一功能对于需要生成大量连续数据或进行批量操作的场景非常有用。本文将详细介绍 generate_series 函数的基本用法,并通过一些简单的示例帮助你更好地理解和应用这一函数。 2. 基本用法 generate_series 函数的基本语法

在大语言模型中,生成文本的退出机制,受max_generate_tokens限制,并不是所有的问答都完整的跑完整个transformer模型

目录 在大语言模型中,生成文本的退出机制,受max_generate_tokens限制,并不是所有的问答都完整的跑完整个transformer模型  1. max_generate_tokens的作用 2. 退出机制与Transformer模型 3. 实际应用中的影响 4. 结论 在大语言模型中,生成文本的退出机制,受max_generate_tokens限制,并不是所有的

android studio 使用Generate JavaDoc生成javaDoc

通过android studio tool 下的Generate JavaDoc 生成javaDoc,可以选择整个项目,也可以选择某个moudle 或者某个路径进行生成,如果你想要生成的javaDoc 文件将依赖关系的库也生成,那么必须自定义,将需要的库也选中。 1.普通javaDoc 打开Generate javaDoc 在这之前选择你要生成javadoc 的项目或者路径,并且 Othe

HLS报错之:Export RTL报错 “ERROR: [IMPL 213-28] Failed to generate IP.“

原因:官方bug 解决办法:下载补丁(补丁适用于2014年至2021年的多个Vivado版本),并添加到对应路径下即可。 注意:windows下该方法试用。 补丁连接 我这里下载到xilinx的目录下并解压: 点进去找到该文件: 复制到scripts路径下即可 现在export RTL就正常了

代码随想录算法训练营第24天 | LeetCode93.复原IP地址、LeetCode78.子集、LeetCode90.子集II

目录 LeetCode93.复原IP地址 LeetCode78.子集 LeetCode90.子集II LeetCode93.复原IP地址 有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 '.' 分隔。 例如:"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址,但是 "0.011.255.245"、

LeetCode第21题之Generate Parentheses(两种解法)

C++代码: 解法一(在LeetCode上运行效率高于解法二): #include <vector>#include <iostream>#include <string>using namespace std;class Solution {private:vector<string> res;public: //leftRemain保存还可以放左括号的数目,rightRemain