亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java C++題解leetcode856括號(hào)的分?jǐn)?shù)

 更新時(shí)間:2022年10月17日 11:37:23   作者:AnjaVon  
這篇文章主要為大家介紹了Java C++題解leetcode856括號(hào)的分?jǐn)?shù)實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

題目要求

思路一:棧

Java

class Solution {
    public int scoreOfParentheses(String s) {
        Deque<Integer> sta = new ArrayDeque<>();
        sta.addLast(0);
        for (char c : s.toCharArray()) {
            if (c == '(')
                sta.addLast(0);
            else { // 結(jié)束一個(gè)括號(hào)
                int cur = sta.pollLast(); // 取出當(dāng)前分?jǐn)?shù)
                sta.addLast(sta.pollLast() + Math.max(cur * 2, 1)); // 更新上級(jí)括號(hào)分?jǐn)?shù)
            }
        }
        return sta.peekLast();
    }
}
  • 時(shí)間復(fù)雜度:O(n)
  • 空間復(fù)雜度:O(n)

C++

class Solution {
public:
    int scoreOfParentheses(string s) {
        stack<int> sta;
        sta.push(0); // 初始0用于記錄結(jié)果分?jǐn)?shù)
        for (auto c : s) {
            if (c == '(')
                sta.push(0);
            else { // 結(jié)束一個(gè)括號(hào)
                int cur = sta.top(); // 取出當(dāng)前分?jǐn)?shù)
                sta.pop();
                sta.top() += max(cur * 2, 1); // 更新上級(jí)括號(hào)分?jǐn)?shù)
            }
        }
        return sta.top();
    }
};
  • 時(shí)間復(fù)雜度:O(n)
  • 空間復(fù)雜度:O(n)

Rust

impl Solution {
    pub fn score_of_parentheses(s: String) -> i32 {
        let mut sta = Vec::with_capacity((s.len() >> 1) + 1);
        sta.push(0); // 初始0用于記錄結(jié)果分?jǐn)?shù)
        for c in s.bytes() {
            if c == b'(' {
                sta.push(0);
            }
            else {
                let cur = sta.pop().unwrap();
                *sta.last_mut().unwrap() += 1.max(cur << 1);
            }
        }
        sta[0]
    }
}
  • 時(shí)間復(fù)雜度:O(n)
  • 空間復(fù)雜度:O(n)

思路二:模擬計(jì)算

  • 略去棧,直接記錄分?jǐn)?shù);
  • 根據(jù)題意發(fā)現(xiàn)其實(shí)分?jǐn)?shù)來(lái)源就只是(),所以記錄其所在深度depth考慮乘幾個(gè)222,然后累加到答案上即可。
  • 因?yàn)榈谝粋€(gè)字符一定是(,所以默認(rèn)深度為1,遍歷字符串時(shí)直接掠過(guò)s[0]。

Java

class Solution {
    public int scoreOfParentheses(String s) {
        int depth = 1, res = 0;
        for (int i = 1; i < s.length(); i++) {
            depth += (s.charAt(i) == '(' ? 1 : -1);
            if (s.charAt(i - 1) == '(' && s.charAt(i) == ')') // 分?jǐn)?shù)來(lái)源
                res += 1 << depth;
        }
        return res;
    }
}
  • 時(shí)間復(fù)雜度:O(n)
  • 空間復(fù)雜度:O(1)

C++

class Solution {
public:
    int scoreOfParentheses(string s) {
       int depth = 1, res = 0;
        for (int i = 1; i < s.size(); i++) {
            depth += (s[i] == '(' ? 1 : -1);
            if (s[i - 1] == '(' && s[i] == ')') // 分?jǐn)?shù)來(lái)源
                res += 1 << depth;
        }
        return res;
    }
};
  • 時(shí)間復(fù)雜度:O(n)
  • 空間復(fù)雜度:O(1)

Rust

impl Solution {
    pub fn score_of_parentheses(s: String) -> i32 {
        let (mut depth, mut res) = (1, 0);
        let ss = s.as_bytes();
        for i in 1..s.len() {
            if (ss[i] == b'(') {
                depth += 1
            }
            else {
                depth -= 1;
                if ss[i - 1] == b'(' { // 分?jǐn)?shù)來(lái)源
                    res += 1 << depth;
                }
            }
        }
        res
    }
}
  • 時(shí)間復(fù)雜度:O(n)
  • 空間復(fù)雜度:O(1)

總結(jié)

自己想到的方法有點(diǎn)類(lèi)似兩種結(jié)合,用棧記錄分?jǐn)?shù)來(lái)源的括號(hào)并記錄最后計(jì)算分?jǐn)?shù),沒(méi)有意識(shí)到可以直接累加計(jì)算,順序不影響結(jié)果。

以上就是Java C++題解leetcode856括號(hào)的分?jǐn)?shù)的詳細(xì)內(nèi)容,更多關(guān)于Java C++ 括號(hào)的分?jǐn)?shù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C/C++實(shí)現(xiàn)線性順序表的示例代碼

    C/C++實(shí)現(xiàn)線性順序表的示例代碼

    使用順序存儲(chǔ)結(jié)構(gòu)的線性存儲(chǔ)結(jié)構(gòu)的表為線性順序表。本文將分別利用C語(yǔ)言和C++實(shí)現(xiàn)線性順序表,文中示例代碼講解詳細(xì),需要的可以參考一下
    2022-05-05
  • 使用C語(yǔ)言繪制柱形圖的示例代碼

    使用C語(yǔ)言繪制柱形圖的示例代碼

    常用的統(tǒng)計(jì)圖有條形圖、柱形圖、折線圖、曲線圖、餅圖、環(huán)形圖、扇形圖,這篇文章主要為大家介紹了C語(yǔ)言中繪制條形圖和柱形圖的方法,需要的可以參考下
    2024-02-02
  • C語(yǔ)言打印華氏-攝氏溫度對(duì)照表的方法

    C語(yǔ)言打印華氏-攝氏溫度對(duì)照表的方法

    這篇文章主要介紹了C語(yǔ)言打印華氏-攝氏溫度對(duì)照表的方法,涉及C語(yǔ)言字符串與數(shù)字操作的相關(guān)技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-07-07
  • C++缺省參數(shù)與重載函數(shù)(超詳細(xì)!)

    C++缺省參數(shù)與重載函數(shù)(超詳細(xì)!)

    無(wú)論使用什么語(yǔ)言函數(shù)都是代碼段中必不可少的部分,因此我們有必要深入認(rèn)識(shí)一下C++中函數(shù)的兩種特殊用法,缺省參數(shù),函數(shù)重載,這篇文章主要給大家介紹了關(guān)于C++缺省參數(shù)與重載函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2024-06-06
  • C語(yǔ)言算法積累圖的遍歷鄰接表簡(jiǎn)單路徑

    C語(yǔ)言算法積累圖的遍歷鄰接表簡(jiǎn)單路徑

    這篇文章主要為大家介紹了C語(yǔ)言算法積累圖的遍歷鄰接表簡(jiǎn)單路徑實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 詳解C語(yǔ)言之柔性數(shù)組

    詳解C語(yǔ)言之柔性數(shù)組

    這篇文章主要介紹了C語(yǔ)言柔性數(shù)組,通過(guò)實(shí)例分析了不完整類(lèi)型、結(jié)構(gòu)體及柔性數(shù)組等概念,需要的朋友可以參考下
    2021-11-11
  • C語(yǔ)言使用順序表實(shí)現(xiàn)電話本功能

    C語(yǔ)言使用順序表實(shí)現(xiàn)電話本功能

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言使用順序表實(shí)現(xiàn)電話本功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • C語(yǔ)言中extern詳細(xì)用法解析

    C語(yǔ)言中extern詳細(xì)用法解析

    這篇文章主要介紹了C語(yǔ)言中extern詳細(xì)用法解析,本文講解的extern也是C語(yǔ)言中的關(guān)鍵詞,用來(lái)修飾函數(shù)聲明或變量等,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++?超詳細(xì)講解stack與queue的使用

    C++?超詳細(xì)講解stack與queue的使用

    C++?Stack(堆棧)?是一個(gè)容器類(lèi)的改編,為程序員提供了堆棧的全部功能,也就是說(shuō)實(shí)現(xiàn)了一個(gè)先進(jìn)后出(FILO)的數(shù)據(jù)結(jié)構(gòu),許多程序都使用了?queue?容器。queue?容器可以用來(lái)表示超市的結(jié)賬隊(duì)列或服務(wù)器上等待執(zhí)行的數(shù)據(jù)庫(kù)事務(wù)隊(duì)列
    2022-03-03
  • C++17實(shí)現(xiàn)flyweight_factory模板類(lèi)及使用示例詳解

    C++17實(shí)現(xiàn)flyweight_factory模板類(lèi)及使用示例詳解

    這篇文章主要為大家介紹了C++17實(shí)現(xiàn)flyweight_factory模板類(lèi)及使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08

最新評(píng)論