剑指 Offer II 085. 生成匹配的括号

217 阅读1分钟

剑指 Offer II 085. 生成匹配的括号

a 代表左括号个数,b 代表右括号个数,这里使用了二叉树的思想,每个节点都分两种情况,新增一个左括号(,或者新增一个有括号的情况),直到遇到了左右个数相等且配对个数为n了,就返回结果

var generateParenthesis = function (n) {
  var res = [];
  dfs(0, 0, "");
  return res;
  function dfs(a, b, str) {
    if (a === b && a === n) {
      res.push(str);
      return;
    }
    if (a < b || a > n) {
      return;
    }
    dfs(a + 1, b, str + "(");
    dfs(a, b + 1, str + ")");
  }
};