leetcode22——括号生成

class Solution {
    List<String> list=new LinkedList<>();
    public List<String> generateParenthesis(int n) {
        DFS(0,0,"",n);
        return list;
    }

    public void DFS(int left,int right,String s,int n){
        if(s.length()==2*n){
            list.add(s);
            return;
        }

        if(left<n){
            DFS(left+1,right,s+"(",n);
        }

        if(right<left){
            DFS(left,right+1,s+")",n);
        }
    }
}

 利用回溯算法 +深度优先遍历

有序的括号 就像二叉树一样 一层一层下去

先输入左括号 才有对应的右括号

而左括号要小于 等于括号总对数n

右括号要小于等于左括号数量

并且每次递归  left  和right 不需要改变  不然到输入右括号的时候   因为left每次都增加一个  右括号不能输入在对应位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值