leetcode 22. 括号生成

2023.9.24

看到组合两个字,想到了回溯。 大致思路是将所有可能的组合列出来,通过中止条件筛选掉无效的括号。 第一个中止条件:如果右括号数量大于左括号,那括号肯定无效。 第二个中止条件:当左右括号数量相等,并且都等于n时,说明这个括号符合条件,加入ans数组中,再return继续寻找。 图示和代码如下:

cpp 复制代码
class Solution {
private:
    //全局变量
    vector<string> ans;
    string path;
public:
    void backtrating(int n,int left,int right) //left和right是左右括号的数量
    {
        //中止条件
        if(right > left) return;
        if(left == right && left == n)
        {
            ans.push_back(path);
            return;
        }
        //优先加左括号
        if(left < n)
        {
            path += '(';
            backtrating(n,left+1,right);
            path.pop_back();
        }
        //加右括号
        if(left > right)
        {
            path += ')';
            backtrating(n,left,right+1);
            path.pop_back();
        }
    }
    vector<string> generateParenthesis(int n) {
        backtrating(n,0,0);
        return ans;
    }
};
相关推荐
cookqq9 小时前
mongodb根据索引IXSCAN 查询记录流程
数据结构·数据库·sql·mongodb·nosql
16_one10 小时前
autoDL安装Open-WebUi+Rag本地知识库问答+Function Calling
人工智能·后端·算法
ohyeah10 小时前
栈:那个“先进后出”的小可爱,其实超好用!
前端·数据结构
散峰而望11 小时前
C++数组(三)(算法竞赛)
开发语言·c++·算法·github
q***952211 小时前
SpringMVC 请求参数接收
前端·javascript·算法
初级炼丹师(爱说实话版)11 小时前
多进程与多线程的优缺点及适用场景总结
算法
hetao173383711 小时前
2025-11-25~26 hetao1733837的刷题记录
c++·算法
历程里程碑12 小时前
各种排序法大全
c语言·数据结构·笔记·算法·排序算法
少许极端12 小时前
算法奇妙屋(十四)-简单多状态dp问题
算法·动态规划·图解算法·简单多状态dp·打家劫舍问题·买卖股票问题全解
2301_8234380213 小时前
解析论文《复杂海上救援环境中无人机群的双阶段协作路径规划与任务分配》
人工智能·算法·无人机