LeetCode第22题括号生成

继续打卡算法题,今天学习的是LeetCode的第22题括号生成,这道题目是道中等题。算法题的一些解题思路和技巧真的非常巧妙,每天看一看算法题和解题思路,我相信对我们的编码思维和编码能力有一些帮助。

分析一波题目

这道题目一看完,刚看感觉好难,但是我们想通了诀窍之后,就非常简单了。

我们第一个字符肯定是左括号(,从第二符号开始,就可能是右括号和左括号了。

我们如果使用树来表示,就可以比较容易理解,以n=3为例,我们不断尝试增加左右括号。

从上图已经可以看出可以继续增加括号的规律:

1、如果右边的括号数小于左边括号的数,可以增加括号

2、如果左边的节点必须小于n,如果大于等于n,不可以增加左括号了,肯定就不符合有效的括号

编码解决

java 复制代码
class Solution {


    public List<String> generateParenthesis(int n) {

        int left = 0;
        int right = 0;
        String s = "";
        List<String> result = new ArrayList<>();
        gen(left, right, n,result, s);
        return result;
    }

    void gen(int left, int right , int n, List<String> result , String s) {

        //符合条件的括号组合
        if(left == n && right == n) {
            result.add(s);
            return;
        }

        //左括号数小于n,可以加左括号
        if(left < n) {
            //左括号+1
            gen(left+1, right, n, result, s+"(");
        }
        //右括号数小于左括号数,可以加右括号
        if(right < left) {
            //右括号+1
            gen(left, right+1, n, result, s+")");
        }
    }
}

总结

一看很难的题目,我们一定要举例推导,查找规律,找到规律就找到解题的诀窍,一下子就茅塞顿开了。

相关推荐
风筝在晴天搁浅几秒前
美团 LeetCode 692.前K个高频单词
算法·leetcode·职场和发展
清溪54910 分钟前
pgAdmin4后台Restore RCE(CVE-2025-13780)复现
数据库·后端
第五页的你19 分钟前
MySQL层级表及表关系
后端
地平线开发者22 分钟前
量化训练时 fusebn/withbn 简介
算法·自动驾驶
星栈24 分钟前
Rust 单二进制部署,真没你想的那么“单”
前端·后端
不做无法实现的梦~30 分钟前
MAVLink 协议教程
linux·stm32·嵌入式硬件·算法
SamDeepThinking30 分钟前
一个业务场景只需要一个ThreadLocal实例
java·后端·程序员
墨白曦煜1 小时前
算法实战笔记:剥开回溯算法的外衣——从通用模板到高阶去重(八)
笔记·算法
她的男孩1 小时前
从自然语言到数据大屏:Forge Report Studio 的 AI 生成链路
人工智能·后端·架构
z200509301 小时前
今日算法(回溯子集)(模版题)
数据结构·算法·leetcode