国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[Leetcod] Generate Parentheses 產(chǎn)生括號(hào)

Ilikewhite / 1834人閱讀

摘要:而對于右括號(hào),必須前面放了一個(gè)左括號(hào),我們才能放一個(gè)右括號(hào)。所以我們根據(jù)剩余可放置左括號(hào),和剩余可放置右括號(hào),代入遞歸,就可以求解。

Generate Parentheses 最新更新請見:https://yanjia.me/zh/2019/01/...
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ù)雜度

時(shí)間 O(N) 空間 O(N) 遞歸棧

思路

當(dāng)我們放置一個(gè)新的符號(hào)時(shí),我們有兩個(gè)選擇,放置左括號(hào),或者放置右括號(hào),但是按照題意我們最多放置n個(gè)左括號(hào),放一個(gè)剩余可放置左括號(hào)就少一個(gè),但剩余可放置右括號(hào)則多了一個(gè)。而對于右括號(hào),必須前面放了一個(gè)左括號(hào),我們才能放一個(gè)右括號(hào)。所以我們根據(jù)剩余可放置左括號(hào),和剩余可放置右括號(hào),代入遞歸,就可以求解。

代碼
public class Solution {
    
    List res = new LinkedList();
    
    public List generateParenthesis(int n) {
        helper(n, 0, "");
        return res;
    }
    
    private void helper(int left, int right, String tmp){
        // 如果左括號(hào)右括號(hào)都放完了,則找到一個(gè)結(jié)果
        if(left == 0 && right == 0){
            res.add(tmp);
            return;
        }
        // 對于每個(gè)位置,我們有兩種選擇,要么放左括號(hào),要么放右括號(hào)
        if (left > 0){
            helper(left - 1, right + 1, tmp+"(");
        }
        if (right > 0){
            helper(left, right - 1, tmp+")");
        }
    }
}
后續(xù) Follow Up

Q:如果想把生成的括號(hào)加上縮進(jìn)來格式化怎么辦?
A:將原先if(left == 00 && right == 0)里面替換為:

int level = 0;
for(int i = 0; i < tmp.length(); i++){
    if(tmp.charAt(i) == "{"){
        for(int k = 0; k < level; k++){
            System.out.print("	");
        }
        System.out.println("{");
        level++;
    } else {
        level--;
        for(int k = 0; k < level; k++){
            System.out.print("	");
        }
        System.out.println("}");
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/64685.html

相關(guān)文章

  • LeetCode[22] Generate Parentheses

    摘要:復(fù)雜度思路注意的地方,要限制左括號(hào)和右括號(hào)。每出現(xiàn)一次左括號(hào),就相對于限定了,最多只能出現(xiàn)那么多右括號(hào)。所以,為了完成這種限定,用來控制。不然會(huì)有的情況出現(xiàn)。 LeetCode[22] Generate Parentheses Given n pairs of parentheses, write a function to generate all combinations of ...

    Jonathan Shieber 評論0 收藏0
  • leetcode22. Generate Parentheses

    摘要:當(dāng)右括號(hào)和左括號(hào)的剩余量均為時(shí),及為一個(gè)最終結(jié)果。而則會(huì)在直接原來的對象上進(jìn)行修改,其指針仍然指向原來的對象。因此在遞歸的過程中使用一定要注意,對對象的修改不要相互干擾。 題目要求 Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses....

    騫諱護(hù) 評論0 收藏0
  • leetcode 22 Generate Parentheses

    摘要:要求返回一個(gè)中包含組括號(hào)所有可能的符合規(guī)則的組合。例如輸入結(jié)果集應(yīng)當(dāng)是想法輸入的就代表著我們的字符串的組成是個(gè)和個(gè)。我們需要跟蹤和的使用情況,來判斷下一步的操作是否合法。 題目詳情 Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses....

    figofuture 評論0 收藏0
  • 構(gòu)造n個(gè)成對括號(hào)

    摘要:構(gòu)造個(gè)成對括號(hào)給出一個(gè)整數(shù),實(shí)現(xiàn)一個(gè)函數(shù)生成對小括號(hào),對小括號(hào)的左右括弧順序不限,但應(yīng)該閉合。思路的情況為時(shí)的括號(hào)串中在縫隙位置再插入一個(gè)括號(hào),如中位置。遞歸解決,時(shí)為在和中再插入一個(gè)括號(hào)。 構(gòu)造n個(gè)成對括號(hào) Generate Parentheses 給出一個(gè)整數(shù)n,實(shí)現(xiàn)一個(gè)函數(shù)生成n對小括號(hào),n對小括號(hào)的左右括弧順序不限,但應(yīng)該閉合。 Given n pairs of parent...

    姘擱『 評論0 收藏0
  • leetcode 301. Remove Invalid Parentheses

    摘要:一個(gè)合法的字符串是指左括號(hào)和右括號(hào)必定成對出現(xiàn)。要求得出用最少次數(shù)的刪除可以得到的所有的合法字符串。最后兩個(gè)結(jié)果重復(fù),因此只保留,兩個(gè)結(jié)果。最終生成的合法字符串為。方法相同于上一種情況。其中出現(xiàn)了兩次。在該下標(biāo)前的刪除將會(huì)產(chǎn)生重復(fù)的結(jié)果。 題目要求 Remove the minimum number of invalid parentheses in order to make the...

    zhisheng 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<