22.括号生成
链接:22.括号生成
难度:Medium
标签:字符串、动态规划、回溯
简介:数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
题解 1 - javascript
- 编辑时间:2020-04-09
- 执行用时:68ms
- 内存消耗:35.1MB
- 编程语言:javascript
- 解法介绍:通过集合去重,再递归判断括号内部。
/**
* @param {number} n
* @return {string[]}
*/
const cache = new Map();
cache.set(1, ['()']);
cache.set(2, ['()()', '(())']);
var generateParenthesis = function (n) {
if (cache.has(n)) return cache.get(n);
const res = new Set();
for (let i = 1; i < n; i++) {
for (let left of generateParenthesis(i))
for (let right of generateParenthesis(n - i)) res.add(`${left}${right}`);
}
for (let item of generateParenthesis(n - 1)) res.add(`(${item})`);
const arr = [...res];
cache.set(n, arr);
return arr;
};