leetcode第22题括号生成

117 阅读1分钟

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

我的JavaScript解法

/**
 * @param {number} n
 * @return {string[]}
 */

var generateParenthesis = function(n) {
  let result = [];
  dfs(result, "", 0, 0, n);
  return result;
};

var dfs = (result, current, left, right, n) => {
  if (current.length == 2 * n) {
    result.push(current);
    return;
  }
  if (left < n) {
    dfs(result, current + '(', left+1, right, n);
  }
  if (right < left) {
    dfs(result, current + ')', left, right+1, n);
  }
}

解析: 深度优先搜索,n对括号,代表有n(n)参考解析回溯算法(深度优先遍历)+ 广度优先遍历

复杂度分析:

  • 时间复杂度: O(n)O(n)
  • 空间复杂度:(有待研究)