我正在使用 Leetcode 生成括号这是方法 -
public class GenerateParentheses {
public List<String> generateParenthesis(int n) {
// Resultant list
List<String> result = new ArrayList<>();
/// Recursively generate parentheses
generateParenthesis(result, "", 0, 0, n);
return result;
}
private void generateParenthesis(List<String> result, String s, int open, int close, int n) {
// Base case
if (open == n && close == n) {
result.add(s);
return;
}
// If the number of open parentheses is less than the given n
if (open < n) {
generateParenthesis(result, s + "(", open + 1, close, n);
}
// If we need more close parentheses to balance
if (close < open) {
generateParenthesis(result, s + ")", open, close + 1, n);
}
}
}
我从this网站了解解决方案,它说该算法的时间复杂度是
O(4^n(sqr_root(n)))
,因为第n个加泰罗尼亚数字。有人可以简化这意味着什么以及为什么它是上限O(4^n(sqr_root(n)))
?