zoukankan      html  css  js  c++  java
  • [LeetCode]题解(python):022-Generate Parentheses

    题目来源:

      https://leetcode.com/problems/generate-parentheses/


    题意分析:

      题目输入一个整型n,输出n对小括号配对的所有可能性。比如说,如果输入3,那么输出"((()))", "(()())", "(())()", "()(())", "()()()"。


    题目思路:

      ①不难发现,n为0的时候输出是空,而n = 1的时候,输出“()”

      ②当n > 1的时候,要使得整个括号字符串可以配对,那么与第一个配对的右括号把n - 1对括号分成了一个 i (0 <= i < n)对已配对的括号和 n - 1 - i对已配对的括号。那么把所有的右括号划分的情况全部列出来就可以了。由于这里的时间复杂度比较复杂,就不作分析了。

    根据上述可以得到:

    f(n) = ∑(   '(' + f(i) +')' + f(n - 1 - i)   )


    代码(python):

    class Solution(object):
        def generateParenthesis(self, n):
            """
            :type n: int
            :rtype: List[str]
            """
            ans = []
            if n == 0:
                return ans
            if n == 1:
                return ['()']
            i = 0
            while i < n:
                tmp1 = self.generateParenthesis(i)
                tmp2 = self.generateParenthesis(n - 1 - i)
                for j in tmp1:
                    for k in tmp2:
                        ans.append('(' + j + ')' + k)
                    if len(tmp2) == 0:
                        ans.append('(' + j + ')')
                if len(tmp1) == 0:
                    for k in tmp2:
                        ans.append('()' + k)
                i += 1
            return ans
    View Code

    转载请注明出处:http://www.cnblogs.com/chruny/p/4872830.html

  • 相关阅读:
    数据结构实验报告(四)
    数据结构实验报告(三)
    数据结构实验报告(一)
    数据结构实验报告(二)
    Java基础之排序
    1070 Mooncake
    1071 Speech Patterns
    1438. Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit
    5403. Find the Kth Smallest Sum of a Matrix With Sorted Rows
    1072 Gas Station
  • 原文地址:https://www.cnblogs.com/chruny/p/4872830.html
Copyright © 2011-2022 走看看