Skip to content

Latest commit

 

History

History
42 lines (39 loc) · 864 Bytes

括号生成.md

File metadata and controls

42 lines (39 loc) · 864 Bytes

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

示例:

输入:n = 3
输出:[
       "((()))",
       "(()())",
       "(())()",
       "()(())",
       "()()()"
     ]

题解

/**
 * @param {number} n
 * @return {string[]}
 */
var generateParenthesis = function(n) {
  const res = []
  const recursion = (left, right, str) => {
    if (left === n && right === n) {
      res.push(str)
      return
    }
    if (left < n) {
      // 加左括号
      recursion(left + 1, right, str + '(')
    }
    if (right < left) {
      // 在左括号的基础上填充右括号
      recursion(left, right + 1, str + ')')
    }
  }
  recursion(0, 0, '')
  return res
};