Generate Parentheses

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:
[ "((()))", "(()())", "(())()", "()(())", "()()()"]

題目思路:
  ①不難發(fā)現(xiàn),n為0的時(shí)候輸出是空,而n = 1的時(shí)候,輸出“()”
  ②當(dāng)n > 1的時(shí)候,要使得整個(gè)括號(hào)字符串可以配對(duì),那么與第一個(gè)配對(duì)的右括號(hào)把n - 1對(duì)括號(hào)分成了一個(gè) i (0 <= i < n)對(duì)已配對(duì)的括號(hào)和 n - 1 - i對(duì)已配對(duì)的括號(hào)。那么把所有的右括號(hào)劃分的情況全部列出來(lái)就可以了。由于這里的時(shí)間復(fù)雜度比較復(fù)雜,就不作分析了。
根據(jù)上述可以得到:
f(n) = ∑( '(' + f(i) +')' + f(n - 1 - i) )

class Solution(object):
    """
      :type n: int
      :rtype: List[str]
      """
    def generateParenthesis(self, n):
        result = []
        def func(left,right,s):
            if  left < right :
                return
            if (left+right == n*2):
                if (left == right):
                    result.append(s)
                return
            func(left,right+1,s+')')
            func(left+1,right,s+'(')
        func(1,0,'(')
        return  result

遞歸解法,左括號(hào)的個(gè)數(shù)比右括號(hào)多

class Solution(object):
    """
      :type n: int
      :rtype: List[str]
      """
    def generateParenthesis(self, n):
        result = []
        def func(left,right,s):
            if  left < right :
                return
            if (left+right == n*2):
                if (left == right):
                    result.append(s)
                return
            func(left,right+1,s+')')
            func(left+1,right,s+'(')
        func(1,0,'(')
        return  result
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)。 張土汪:刷leetcod...
    土汪閱讀 12,778評(píng)論 0 33
  • 題目 Given n pairs of parentheses, write a function to gene...
    Al73r閱讀 445評(píng)論 0 0
  • Given n pairs of parentheses, write a function to generat...
    六尺帳篷閱讀 482評(píng)論 0 2
  • 今天下午結(jié)束了七天的“祥和傳統(tǒng)文化中心學(xué)習(xí)班”的學(xué)習(xí),在祥和度過(guò)了充實(shí)而愉快的一周。 今天上午,我們主要聽(tīng)了祥和傳...
    土蜂閱讀 1,352評(píng)論 0 0
  • 今天是我們呆在蒙古的最后一整天,不過(guò)最后一整天,也未必一直在做總結(jié)。 今天我們?nèi)チ艘粋€(gè)假沙漠,那里有不少的樹(shù)、和草...
    陌霄_Lu閱讀 287評(píng)論 0 3