首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
括号生成
[编程题]括号生成
热度指数:63893
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 256M,其他语言512M
算法知识视频讲解
给出n对括号,请编写一个函数来
生成所有的由n对括号组成的合法组合。
例如,给出n=3,解集为:
"((()))", "(()())", "(())()",
"()()()",
"()(())"
数据范围:
要求:空间复杂度
,时间复杂度
示例1
输入
1
输出
["()"]
示例2
输入
2
输出
["(())","()()"]
马上挑战
算法知识视频讲解
提交运行
算法知识视频讲解
添加笔记
求解答(0)
邀请回答
收藏(1015)
分享
提交结果有问题?
187个回答
154篇题解
开通博客
牛客题解官
发表于 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
展开全文
问题信息
递归
难度:
187条回答
1015收藏
20245浏览
热门推荐
通过挑战的用户
查看代码
幸运的打工人一...
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)
编程题 ,按照要求创建Java 应...
Java
评论
(1)
3.1996至2003年间,从事高...
资料分析
言语理解与表达
资料分析
评论
(1)
电路板布线的时候尽量采用( )折线布线
PCB
评论
(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
["(())","()()"]