【LeetCode热题100】【回溯】括号生成

题目链接:22. 括号生成 - 力扣(LeetCode)

给n对括号找出所有有效组合,首先常规深度遍历回溯能得到所有组合,然后我们来看什么样的组合是有效的,什么样的组合是无效的,采用尾插的字符拼接,因此无论何时)的数量不能超过(,当(和)的数量都得到了n,说明这个组合完成了

复制代码
class Solution {
public:
    vector<string> ans;

    void dfs(string an, int left, int right) {
        if (left < 0 || left > right)
            return;
        if (left == 0 && right == 0) {
            ans.push_back(std::move(an));
            return;
        }
        dfs(an + '(', left - 1, right);
        dfs(an + ')', left, right);
    }

    vector<string> generateParenthesis(int n) {
        dfs("", n, n);
        return ans;
    }
};
相关推荐
带多刺的玫瑰2 分钟前
Leecode#9刷题之回文数
数据结构·算法
泯泷21 分钟前
手搓JSVM第 5 篇:写第一个编译器:从 AST 生成 IR
前端·javascript·算法
泯泷28 分钟前
手搓JSVM第 7 篇:控制流:if、while 与 jump
前端·javascript·算法
泯泷34 分钟前
手搓JSVM第 6 篇:把 IR 编成字节码:emit 与 label fixup
前端·javascript·算法
泯泷36 分钟前
手搓JSVM第 3 篇:从栈式 VM 到寄存器式 VM:为什么我们选择寄存器
前端·javascript·算法
泯泷39 分钟前
第 4 篇:让 VM 支持变量:Slot、Environment 与 TDZ
前端·javascript·算法
Asize1 小时前
54. 螺旋矩阵
算法
Asize1 小时前
73. 矩阵置零
算法
微露清风2 小时前
快慢指针算法学习记录
学习·算法·快慢指针
benchmark_cc3 小时前
1000只ETF的5分钟K线如何批量获取?QuantDash分页策略与高性能Python实践
开发语言·人工智能·爬虫·python·算法·quantdash·量化数据源