先贴代码:
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);
}
}
}
}
这是一个遍历的问题,很自然就想到了递归的方式解决这题。如果“(”符号数量比“)”少的话,“)”插入的时候不会发生任何问题。当这两个符号都用完的时候退出。
贴上运行时间(马马虎虎):
'''
暂时还没有发现更好的思路,留坑
'''