您的位置:首页 > 编程语言 > Java开发

【Leetcode】22. Generate Parentheses

2016-11-28 21:59 274 查看
先贴代码:

public class Solution {

    List<String> aList = new ArrayList();

    public List<String> generateParenthesis(int n) {

        if(n == 0){

            return aList;

        }

        travel("",n,n);

        return aList;

    }

    public void travel(String res,int headNum,int tailNum){

        if(headNum == 0 && tailNum == 0){

            aList.add(res);

        }else{

            if(headNum == 0){

                travel(res+")",headNum,tailNum-1);

            }else if(headNum<tailNum){

                travel(res+"(",headNum-1,tailNum);

                travel(res+")",headNum,tailNum-1);

            }else if(headNum == tailNum){

                travel(res+"(",headNum-1,tailNum);

            }

        }

        

        

    }

}

这是一个遍历的问题,很自然就想到了递归的方式解决这题。如果“(”符号数量比“)”少的话,“)”插入的时候不会发生任何问题。当这两个符号都用完的时候退出。

贴上运行时间(马马虎虎):



'''

暂时还没有发现更好的思路,留坑

'''
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java Leetcode