【算法三十五】22. 括号生成

22. 括号生成

回溯:

java 复制代码
class Solution {
    public List<String> generateParenthesis(int n) {
        List<String> ans = new ArrayList<>();
        backtrack(ans,new StringBuffer(),0,0,n);
        return ans;
    }

    private void backtrack(List<String> ans,StringBuffer combine,int open,int close,int max){
        if(combine.length() == max*2){
            ans.add(combine.toString());
            return;
        }

        if(open < max){
            combine.append('(');
            backtrack(ans,combine,open+1,close,max);
            combine.deleteCharAt(combine.length()-1);
        }

        if(close < open){
            combine.append(')');
            backtrack(ans,combine,open,close+1,max);
            combine.deleteCharAt(combine.length()-1);
        }
    }
}

时间复杂度:

空间复杂度:O(N)

思路:其实回溯的题目思路就是一样,找终止条件,做什么,返回什么,删除;关键是每一层需要做什么,这一题两个if就很巧妙,利用open左括号和n进行比较,添加左括号然后回溯,同时第二个if支持你去添加右括号,然后回溯,最后拿到答案

相关推荐
小小测试开发4 分钟前
OpenAI 模型攻克离散几何 80 年难题:Erdős 单位距离猜想被 AI 证明
人工智能·算法·机器学习
moonsims5 分钟前
从“传感器融合”升级为“多机器人约束融合系统”-Factor Graph 多约束融合
人工智能·算法
Dfreedom.10 分钟前
模型剪枝完全指南:从理论到实践,打造高效深度学习模型
人工智能·算法·机器学习·剪枝·模型加速
几司27 分钟前
OpenISP 模块拆解 · 第11讲:非局部均值降噪 (NLM)
人工智能·算法·均值算法·isp
MicroTech202528 分钟前
突破算力瓶颈,MLGO微算法科技筑牢量子测控与经典混合计算技术根基
科技·算法·量子计算
夏日听雨眠1 小时前
数据结构(堆排序,基数排序)
数据结构·算法
什仙1 小时前
Ansys Maxwell 默认求解器选择
人工智能·笔记·算法·基础·ansys·maxwell
weixin_307779131 小时前
基于Vosk与CTranslate2的实时语音识别翻译系统 —— 完整C++实现详解
人工智能·算法·自动化·语音识别·原型模式
akarinnnn1 小时前
深入理解内存函数:原理、应用与优化
c语言·网络·数据结构·算法
一行代码一行诗++1 小时前
for循环中的break和continue
数据结构·算法