题解 | #60.括号生成#

括号生成

http://www.nowcoder.com/practice/c9addb265cdf4cdd92c092c655d164ca

和全排列一样,甚至更简单,不需要used数组记录使用情况

递归

终止条件:left==n && right==n

本级任务:

  • 左括号没用完,加左括号
  • 左括号<=n并且left>right时,加右括号

不要忘记回溯即可

function generateParenthesis( n ) {
  
  let str = '';
  let res = [];

  function traceTrack(left,right){
    if(left==n && right==n){
      res.push(str);
    }
    if(left<n ){
      str += '(';
      traceTrack(left+1,right);
      str = str.slice(0,str.length-1);
    }
    if(left<=n && left>right){
      str += ')';
      traceTrack(left,right+1);
      str = str.slice(0,str.length-1);
    }
      
  }
  
  traceTrack(0,0);
  return res;
}
全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务