美文网首页
2020-05-03 第二十三天

2020-05-03 第二十三天

作者: 三土垚6 | 来源:发表于2020-05-04 12:22 被阅读0次

2020-5-3 10:00签到
今天还是三道easy,一道medium;

22. 括号生成

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

虽然 题解是正确的,但递归超出栈空间大小了,即,小n可以解决,大n无法解决,这个该怎么办。

void dfs(int left,int right,int n,int index,char *a,char **ans,char *returnSize)
{
    if(left<n)
    {
        a[index]='(';
        dfs(left+1,right,n,index+1,a,ans,returnSize);
    }
    if(right<n&&right<left)
    {
        a[index]=')';
        dfs(left,right+1,n,index+1,a,ans,returnSize);
    }
    if(left==n&&right==n)
    {
        a[index]='\0';
        ans[*returnSize]=(char *)malloc(sizeof(char)*(2*n+1));
        strcpy(ans[*returnSize],a);
        (*returnSize)++;
        return ;
    }    
}
char ** generateParenthesis(int n, int* returnSize){
    char **ans=(char **)malloc(sizeof(char *)*1500);
    *returnSize=0;
    char *a=(char *)malloc(sizeof(char)*(2*n+1));
    dfs(0,0,n,0,a,ans,returnSize);

    return ans;
}

相关文章

网友评论

      本文标题:2020-05-03 第二十三天

      本文链接:https://www.haomeiwen.com/subject/wgtdghtx.html