Сложность: medium
Дано число
n. Нужно сгенерировать все возможные комбинации
n пар правильных скобок. Пример:
Input: n = 3
Output: ["((()))","(()())","(())()","()(())","()()()"]
👨💻 Алгоритм:
1️⃣ Используем DFS с тремя параметрами:
-
l — количество открывающих скобок -
r — количество закрывающих -
t — текущая строка 2️⃣ Прерываем рекурсию, если:
-
l > n, r > n или l < r — комбинация недопустима 3️⃣ Если
l === n && r === n, добавляем строку в результат. Иначе:
- Добавляем
'(', вызываем dfs(l + 1, r, t + '(') - Добавляем
')', вызываем dfs(l, r + 1, t + ')'😎 Решение:
var generateParenthesis = function (n) {
const ans = [];
function dfs(l, r, t) {
if (l > n || r > n || l < r) return;
if (l === n && r === n) {
ans.push(t);
return;
}
dfs(l + 1, r, t + '(');
dfs(l, r + 1, t + ')');
}
dfs(0, 0, '');
return ans;
};Ставь 👍 и забирай 📚 Базу знаний
