22 括号生成

题目

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

示例 1:

输入:n = 3

输出:"((()))","(()())","(())()","()(())","()()()"

示例 2:

输入:n = 1

输出:"()"

思路

使用dfs,回溯+剪枝的方法。

一共是2n个位置,从第一个格子开始检查是否有合适的括号,如果有继续检查下一个格子是否有合适的,否则返回上一层继续检查。检查过程中可以添加限定条件:left<n和right<left缩小范围

代码

bash 复制代码
class Solution {
public:
    vector<string> generateParenthesis(int n) {
        vector<string> res;
        string temp;
        int left = 0, right = 0;
        dfs(n, left, right, temp, res);
        return res;
    }
    void dfs(int n, int left, int right, string temp, vector<string>& res) {
        if (left == n && right == n) {
            res.push_back(temp);
            return;
        }
        if (left < n) {
            temp.push_back('(');
            dfs(n, left + 1, right, temp, res);
            temp.pop_back();
        }
        if (right < left) {
            temp.push_back(')');
            dfs(n, left, right + 1, temp, res);
            temp.pop_back();
        }
    }
};

感谢 华南溜达虎 力扣hot100

相关推荐
无忧.芙桃9 小时前
C++语言原理与实践(十):vector类的底层实现
开发语言·c++·算法
乐迪信息9 小时前
AI防爆摄像机,监测港口船舶航行偏航隐患
大数据·人工智能·深度学习·算法·计算机视觉
0+11110 小时前
算法 --模拟
c++·算法·leetcode
青山是哪个青山10 小时前
LeetCode 300:最长递增子序列
算法
hetao173383710 小时前
2026-10-01~02 hetao1733837 的刷题记录
c++·算法
小虎牙^O^10 小时前
模糊数学综合评价:从模糊数学到建模评价类模型
人工智能·算法
随意起个昵称10 小时前
【单调队列优化DP】U301134 绿色通道
算法·动态规划
Nil20811 小时前
leetcode 739每日温度
算法·leetcode·职场和发展
lvwangshu11 小时前
势能分析(摊还分析)
数据结构·数学·算法
盘古开天166611 小时前
PPO算法代码实战(三):PyTorch从零实现PPO求解CartPole
人工智能·pytorch·算法