摘要:复杂度思路注意的地方,要限制左括号和右括号。每出现一次左括号,就相对于限定了,最多只能出现那么多右括号。所以,为了完成这种限定,用来控制。不然会有的情况出现。
LeetCode[22] Generate Parentheses
BackTrackingGiven n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
复杂度
O(N!),O(N)
思路
注意trick的地方,要限制左括号和右括号。每出现一次左括号,就相对于限定了,最多只能出现那么多右括号。所以,为了完成这种限定,用right - 1来控制。不然会有“(()))(”的情况出现。
代码
public ListgenerateParenthesis(int n) { List res = new LinkedList<>(); helper(res, 0, n, n, new StringBuilder()); return res; } public void helper(List res, int left, int right, int n, StringBuilder temp) { // Base case; if(left == n && right == n) { res.add(temp.roString()); } if(left < n) { // 限制在当前这么多左括号的情况下,最多只能出现那么多的右括号。 helper(res, left + 1, right - 1, n, temp.append("(")); temp.deleteCharAt(temp.length() - 1); } if(right < n) { helper(res, left, right + 1, n, temp.append(")")); temp.deleteCharAt(temp.length() - 1); } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/65249.html
Problem Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses. For example, given n = 3, a solution set is: [ ((())), (()()), (())(), ()(()), ...
摘要:当右括号和左括号的剩余量均为时,及为一个最终结果。而则会在直接原来的对象上进行修改,其指针仍然指向原来的对象。因此在递归的过程中使用一定要注意,对对象的修改不要相互干扰。 题目要求 Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses....
摘要:要求返回一个中包含组括号所有可能的符合规则的组合。例如输入结果集应当是想法输入的就代表着我们的字符串的组成是个和个。我们需要跟踪和的使用情况,来判断下一步的操作是否合法。 题目详情 Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses....
摘要:前言从开始写相关的博客到现在也蛮多篇了。而且当时也没有按顺序写现在翻起来觉得蛮乱的。可能大家看着也非常不方便。所以在这里做个索引嘻嘻。顺序整理更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新 前言 从开始写leetcode相关的博客到现在也蛮多篇了。而且当时也没有按顺序写~现在翻起来觉得蛮乱的。可能大家看着也非常不方便。所以在这里做个索引嘻嘻。 顺序整理 1~50 1...
阅读 1457·2021-08-09 13:47
阅读 2740·2019-08-30 15:55
阅读 3461·2019-08-29 15:42
阅读 1068·2019-08-29 13:45
阅读 2968·2019-08-29 12:33
阅读 1713·2019-08-26 11:58
阅读 937·2019-08-26 10:19
阅读 2382·2019-08-23 18:00