题目来源:
https://leetcode.com/problems/generate-parentheses/
自我感觉难度/真实难度:
题意:
分析:
自己想了一个插空的方法,写出来了,但是效率不是很高,因为是循环了 所有的情况,这里需要需要主要条件的使
自己的代码:
class Solution: def generateParenthesis(self, n: int) -> List[str]: ini_str='()' if n==0: return [] res=["()"] if n==1: return ["()"] for i in range(n-1): insert_place=2*(i+1)+1 Leave_one=set() for paren in res: for j in range(insert_place): newParen=paren[:j]+'()'+paren[j:] Leave_one.add(newParen) res=list(Leave_one) return res
代码效率/结果:
优秀代码:
def generateParenthesis(self, n): def generate(p, left, right, parens=[]): if left: generate(p + '(', left-1, right) if right > left: generate(p + ')', left, right-1) if not right: parens += p, return parens return generate('', n, n)
代码效率/结果:
自己优化后的代码:
反思改进策略:
1.使用回溯法,可以节省时间
写题时间时长:
3.0h