Skip to content

Latest commit

 

History

History
41 lines (31 loc) · 833 Bytes

0022-括号生成.md

File metadata and controls

41 lines (31 loc) · 833 Bytes

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

 

示例 1:

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

输入:n = 1 输出:["()"]  

提示:

1 <= n <= 8

var generateParenthesis = function(n) {
  const result = []

  const dfs = (left, right, str) => {
    if (str.length === n * 2) {
      result.push(str)
      return
    }
    if (left > 0) {
      dfs(left - 1, right, `${str}(`)
    }
    if (left < right) {
      dfs(left, right - 1, `${str})`)
    }
  }

  dfs(n, n, '')
  return result
};

解题思路: 自己先用dfs的思路做了一下发现解不出来,后面直接查看的题解发现需要根据左右括号剩余数量来进行判断,挺精妙的。值得复习