生成匹配的括号「leetcode」

博客内容探讨了如何使用深度优先搜索(DFS)和广度优先搜索(BFS)解决LeetCode上的生成匹配括号问题。针对n值在1到8的范围,通过搜索策略找出所有可能的合法括号组合,并利用Set数据结构避免重复。
摘要由CSDN通过智能技术生成

这道题要生成所有合法的括号情况,可以看到n的数值范围在[1,8]非常小,所以可以一个一个的搜索。

第一种是用DFS把每种情况都搜索一波,留下合法的所有情况

var generateParenthesis = function(n) {
    // DFS回溯思路
    // 每次添加一个括号,左边和右边,其实这个题目的难点就在于建模
    let res = []
    dfs(0,0,"")
    return res
    function dfs(open,close,cur){
        // 特判不满足条件的
        if( open > n || close > n || close > open ){
            return
        }
        if(open === n && close === n){
            res.push(cur)
            return
        }
        // 用左和右来区分其实就相当于push--pop
        curLeft = cur + '('
        dfs(open+1,close,curLeft)
        curRight = cur + ')'
        dfs(open,close+1,curRight)
    }
};

第二种是用BFS进行搜索,然后用Set的数据结构来去重

var generateParenthesis = function(n) {
    // 思路是从开始往后面不断的去推导
    let set = new Se
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值