最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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語(yǔ)言計(jì)算大數(shù)階乘的方法

    C語(yǔ)言計(jì)算大數(shù)階乘的方法

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言計(jì)算大數(shù)階乘的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • c++下迭代器總結(jié)

    c++下迭代器總結(jié)

    大家好,本篇文章主要講的是c++下迭代器總結(jié),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 聊一聊C++虛函數(shù)表的問(wèn)題

    聊一聊C++虛函數(shù)表的問(wèn)題

    C++是面向?qū)ο蟮恼Z(yǔ)言(與C語(yǔ)言主要區(qū)別),所以C++也擁有多態(tài)的特性。下面通過(guò)代碼看下C++虛函數(shù)表的問(wèn)題,感興趣的朋友一起看看吧
    2021-10-10
  • c語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易版三子棋(附完整代碼)

    c語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易版三子棋(附完整代碼)

    大家好,本篇文章主要講的是c語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易版三子棋(附完整代碼),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-01-01
  • C++??STL?_?Vector使用及模擬實(shí)現(xiàn)

    C++??STL?_?Vector使用及模擬實(shí)現(xiàn)

    這篇文章主要介紹了C++ STL_Vector使用及模擬實(shí)現(xiàn),文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • C語(yǔ)言庫(kù)的封裝和使用方法總結(jié)

    C語(yǔ)言庫(kù)的封裝和使用方法總結(jié)

    在編程的過(guò)程中,使用已經(jīng)封裝好的庫(kù)函數(shù)是十分方便的,也是十分高效的,這篇文章主要給大家介紹了關(guān)于C語(yǔ)言庫(kù)的封裝和使用的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • C語(yǔ)言基礎(chǔ)知識(shí)點(diǎn)解析(extern,static,typedef,const)

    C語(yǔ)言基礎(chǔ)知識(shí)點(diǎn)解析(extern,static,typedef,const)

    本篇文章是對(duì)C語(yǔ)言基礎(chǔ)知識(shí)點(diǎn)(extern,static,typedef,const)的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-10-10
  • C++實(shí)現(xiàn)LeetCode(95.獨(dú)一無(wú)二的二叉搜索樹(shù)之二)

    C++實(shí)現(xiàn)LeetCode(95.獨(dú)一無(wú)二的二叉搜索樹(shù)之二)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(95.獨(dú)一無(wú)二的二叉搜索樹(shù)之二),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++實(shí)現(xiàn)通訊錄小功能

    C++實(shí)現(xiàn)通訊錄小功能

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)通訊錄小功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++中的自增與自減

    C++中的自增與自減

    這篇文章主要介紹了C++中的自增與自減,自增與自減是C++當(dāng)中兩個(gè)使用頻率非常高的運(yùn)算符,不僅在循環(huán)當(dāng)中用到,在日常的代碼當(dāng)中也經(jīng)常使用,下面來(lái)看看文章得具體介紹
    2021-11-11

最新評(píng)論

罗城| 清新县| 上虞市| 丰镇市| 增城市| 晋江市| 松原市| 九台市| 客服| 乐至县| 梧州市| 福建省| 凌海市| 虞城县| 万全县| 双牌县| 义马市| 普宁市| 全州县| 临西县| 新建县| 治多县| 普洱| 桐城市| 印江| 满城县| 枣强县| 深州市| 安福县| 固始县| 许昌市| 伊宁市| 濮阳市| 张家口市| 准格尔旗| 自治县| 云梦县| 泾源县| 滁州市| 盱眙县| 城市|