首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
括号生成
[编程题]括号生成
热度指数:66052
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M
算法知识视频讲解
给出n对括号,请编写一个函数来
生成所有的由n对括号组成的合法组合。
例如,给出n=3,解集为:
"((()))", "(()())", "(())()",
"()()()",
"()(())"
数据范围:
要求:空间复杂度
,时间复杂度
示例1
输入
1
输出
["()"]
示例2
输入
2
输出
["(())","()()"]
马上挑战
算法知识视频讲解
提交运行
算法知识视频讲解
添加笔记
求解答(0)
邀请回答
收藏(1057)
分享
提交结果有问题?
191个回答
156篇题解
开通博客
牛客题解官
发表于 2022-04-22 12:32:56
精华题解
题目主要信息: 求n对括号的全部合法组合,左右括号之间任意组合,只要合法就行 需要输出所有的结果 举一反三: 学习完本题的思路你可以解决如下题目: BM55. 没有重复项数字的全排列 BM56. 有重复项数字的全排列 BM58. 字符串的排列 方法:递归(推荐使用) 知识点:递归与回溯 递归是一
展开全文
牛一霸
发表于 2021-07-07 22:06:18
精华题解
题目:括号的生成 描述:给出n对括号,请编写一个函数来生成所有的由n对括号组成的合法组合。 例如,给出n=3,解集为:"((()))", "(()())", "(())()", "()()()", "
展开全文
蒙牛麦片
发表于 2021-07-16 17:46:10
精华题解
NC26 括号生成 题意分析: 给定数字n,枚举出n对括号可组成的合法组合。 题解一(暴力枚举): n对括号,一共2n个字符。用这2n个字符生成个序列,并且检查每一个序列是否时合法的括号序列。生成序列我们可以使用递归。判断生成的可以使括号序列用一种平衡的思想。假设一个括号序列有值。左括号(对值贡献为
展开全文
下一次什么时候可以修改昵称
发表于 2020-10-28 21:30:15
算法 1.回溯法:回溯的过程是函数的进入与退出 2.记录左括号和右括号的数量: 当左括号数量小于n时继续添加左括号 当右括号数量小于左括号时继续添加右括号 public List<String> generateParenthesis(int n) { ArrayLis
展开全文
多拿好offer_gx
发表于 2021-12-06 14:45:48
合法的括号序列需要满足两个条件: 序列的左右括号数量相同 序列的任一个前缀的左括号数量不少于右括号数量 基于此,使用DFS求解。代码如下: import java.util.*; public class Solution { /** * * @param n
展开全文
已注销
发表于 2022-03-22 10:24:04
这题一开始看就那样,再看没思路,再看就跑路。 不至于不至于 你想下你做的最多是全排列,那种枚举类型的一看需要要用回溯,发现一个问题怎么回溯 他给你回溯的条件只有n,它代表了啥,左右括号都为n,我这题就是需要返回值的 我dfs的参数确定了,left,right,curStr 回溯终止条件是啥?是不是
展开全文
sugar-tx
发表于 2021-02-05 14:15:53
先上代码 import java.util.*; public class Solution { /** * * @param n int整型 * @return string字符串ArrayList */ private ArrayL
展开全文
牛客516598323号
发表于 2020-09-28 00:19:03
递归搜索,尝试增加括号,如果剩余的括号里左括号多于右括号,则不可能完成任务,抛弃结果;如果没有括号剩下,那么任务完成,把结果temp添加到ans。注意python没有传参,需要不断对原list对象赋值。https://www.cnblogs.com/ariel-dreamland/p/9133613
展开全文
笨猪爆破组
发表于 2021-07-18 15:31:54
思路 这道题就是在不停选括号,要么选左括号,要么选右括号。并且,是有约束地选: 只要(有剩,就可以选(。 (((((这么选,都还不能判定为非法。 当剩下的)比(多时,才可以选),否则,)不能选,选了就非法了(结合下图感受一下)。 下图描述节点的状态有:当前构建的字符串、左 右括号所剩的数量。 回
展开全文
牛客941408990号
发表于 2021-09-18 23:00:35
# # # @param n int整型 # @return string字符串一维数组 # class Solution: def generateParenthesis(self , n ): # write code here if n==0:
展开全文
Cintia.Xiong
发表于 2021-11-21 13:29:26
思想:每一个合法组合的首末位是确定的,即所有的组合都为(####)。其中,根据排列组合的知识可以知道,我们还有2n-2个位置需要确定。其中,只需要确定左括号(的位置就可以了。 代码解释:这里的基本思想是一个一个加,先从一个左括号(开始,一个循环之后变成[((,()],然后变成[(((,((),()(
展开全文
摸鱼学大师
发表于 2022-02-20 11:22:18
题目主要信息: 求n对括号的所有合法组合,输出顺序不定 合法组合即每个右括号都能在左边有与之一一对应的左括号 具体思路: 相当于一共n个左括号和n个右括号,可以给我们使用。如果使用了一个左括号以后,那么还剩下n-1个左括号和n个右括号,也是将这些括号连接成一个字符串,就相当于是原问题的子问题,因
展开全文
OfferCall!
发表于 2021-04-01 08:18:01
为了防止出现右括号在左括号前面的情况发生,每次递归一定要先考虑左括号,当左括号的情况考虑完了,再考虑右括号,而且要保证每次递归时已有的右括号的数量不能大于左括号的数量,否则也会造成交叉。 public ArrayList<String> generateParenthesis (int
展开全文
问题信息
递归
难度:
191条回答
1057收藏
20610浏览
热门推荐
通过挑战的用户
查看代码
幸运的打工人一...
2022-11-15 14:53:37
牛客65523...
2022-10-05 21:28:10
牛客11456...
2022-09-20 13:02:32
牛客45609...
2022-09-16 17:00:52
希望奇迹发生的...
2022-09-16 13:53:31
相关试题
执行完下列语句段后,i值为()
递归
评论
(16)
字符串最后一个单词的长度
字符串
评论
(3592)
来自
2016乐视暑期实习生招...
字符串分隔
字符串
评论
(3162)
1993-2003年某国国内生产总...
资料分析
言语理解与表达
资料分析
评论
(1)
无源晶振起振电容容量选择方法
元器件
评论
(1)
括号生成
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return string字符串ArrayList */ public ArrayList
generateParenthesis (int n) { // write code here } }
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return string字符串vector */ vector
generateParenthesis(int n) { // write code here } };
#coding:utf-8 # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param n int整型 # @return string字符串一维数组 # class Solution: def generateParenthesis(self , n ): # write code here
using System; using System.Collections.Generic; class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return string字符串一维数组 */ public List
generateParenthesis (int n) { // write code here } }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return string字符串一维数组 */ function generateParenthesis( n ) { // write code here } module.exports = { generateParenthesis : generateParenthesis };
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param n int整型 # @return string字符串一维数组 # class Solution: def generateParenthesis(self , n: int) -> List[str]: # write code here
package main import "fmt" /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return string字符串一维数组 */ func generateParenthesis( n int ) []string { // write code here }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return string字符串一维数组 * @return int* returnSize 返回数组行数 */ char** generateParenthesis(int n, int* returnSize ) { // write code here }
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param n int整型 # @return string字符串一维数组 # class Solution def generateParenthesis(n) # write code here end end
object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return string字符串一维数组 */ def generateParenthesis(n: Int): Array[String] = { // write code here } }
object Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return string字符串一维数组 */ fun generateParenthesis(n: Int): Array
{ // write code here } }
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return string字符串一维数组 */ public String[] generateParenthesis (int n) { // write code here } }
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return string字符串一维数组 */ export function generateParenthesis(n: number): string[] { // write code here }
public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return string字符串一维数组 */ func generateParenthesis ( _ n: Int) -> [String] { // write code here } }
struct Solution{ } impl Solution { fn new() -> Self { Solution{} } /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 * @return string字符串一维数组 */ pub fn generateParenthesis(&self, n: i32) -> Vec
{ // write code here } }
1
["()"]
2
["(())","()()"]