首页 > 其他分享 >【DFS】LeetCode 22. 括号生成

【DFS】LeetCode 22. 括号生成

时间:2023-02-28 14:15:28浏览次数:52  
标签:right 22 int stringBuilder DFS 括号 dfs LeetCode left

题目链接

22. 括号生成

思路

使用 DFS 和贪心的思想,如果左括号的数量不够就优先放置左括号,然后再放置右括号。

代码

class Solution {
    private List<String> result = new ArrayList<>();

    public List<String> generateParenthesis(int n) {

        if(n == 0){
            return this.result;
        }

        dfs(new StringBuilder(), 0, 0, n);

        return this.result;
    }

    void dfs(StringBuilder stringBuilder, int left, int right, int n){
        if(left == n && right == n){
            this.result.add(stringBuilder.toString());
            return;
        }

        if(left < right){
            return;
        }

        if(left < n){
            stringBuilder.append("(");
            dfs(stringBuilder, left + 1, right, n);
            stringBuilder.deleteCharAt(stringBuilder.length() - 1);
        }
        if(right < n){
            stringBuilder.append(")");
            dfs(stringBuilder, left, right + 1, n);
            stringBuilder.deleteCharAt(stringBuilder.length() - 1);
        }
    }
}

标签:right,22,int,stringBuilder,DFS,括号,dfs,LeetCode,left
From: https://www.cnblogs.com/shixuanliu/p/17164019.html

相关文章

  • 22. Laravel 模型关联:更多使用方法 – 2
    Laravel模型关系:多态关联配套视频地址:https://www.bilibili.com/video/av73028135?p=6多态一对一项目:运营人员就一个图片,发布一篇博客或者一篇文章。表articles......
  • leetcode之——二分法模板
    classSolution:defsearch(self,nums:List[int],target:int)->int:n=len(nums)left,right=0,n-1whileleft<=right:k=(right-left)//2+left......
  • 分布式文件系统FastDFS的HTTP访问
    1概述在文件上传的时候,上传成功的信息中有提示我们可以通过某个路径去访问上传的文件,但是我们直接访问这个路径,却不可以,那么已经上传到FastDFS文件系统中的文件,我们如何在......
  • LeetCode算法训练-回溯 491.递增子序列 46.全排列 47.全排列 II
    欢迎关注个人公众号:爱喝可可牛奶LeetCode算法训练-回溯491.递增子序列46.全排列47.全排列IILeetCode491.递增子序列分析找出并返回所有数组中不同的递增子序列......
  • LeetCode/2.两数相加
    给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和......
  • 2022年冬pat乙级考试题目及代码解析附部分错误原因
    快考pat乙级了,花了十块钱做了一下去年冬天的pat乙级,不难,现在在花ac之后的时间来写文章,默默许愿几天后的也不难,但是我们也要做好准备啊~B-1谣言检测仪分数15......
  • 0227模拟赛(狗蛋)
    \(~~~~\)这场其实质量挺高的(比起前面来说)\(~~~~\)但我挂了80+,占到得分的一半QAQ多线并行/「CF1765D」WatchtheVideos题意\(~~~~\)每个东西占的空间为\(a_i\),总......
  • C语言:例如2+22+222+2222+22222(
    //题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。//1.程序分析:关键是计算出每一项的值。//2.......
  • LeetCode算法训练 93.复原IP地址 78.子集 90.子集II
    欢迎关注个人公众号:爱喝可可牛奶LeetCode算法训练93.复原IP地址78.子集90.子集IILeetCode93.复原IP地址分析字符串全部由数字组成,ipv4每一段数字不能有前导0,且......
  • leetcode-1024-easy
    DivisorGameAliceandBobtaketurnsplayingagame,withAlicestartingfirst.Initially,thereisanumbernonthechalkboard.Oneachplayer'sturn,that......