国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

第10天-代碼隨想錄刷題訓(xùn)練-第五章 棧和隊(duì)列- ● 理論基礎(chǔ) ● 232.用棧實(shí)現(xiàn)隊(duì)列 ● 225. 用隊(duì)列實(shí)現(xiàn)棧

這篇具有很好參考價(jià)值的文章主要介紹了第10天-代碼隨想錄刷題訓(xùn)練-第五章 棧和隊(duì)列- ● 理論基礎(chǔ) ● 232.用棧實(shí)現(xiàn)隊(duì)列 ● 225. 用隊(duì)列實(shí)現(xiàn)棧。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1. 理論基礎(chǔ)

  • 棧和隊(duì)列對(duì)應(yīng)的三個(gè)不同的STL版本,底層實(shí)現(xiàn)方式不一樣, 為我們所知道的是 SGI STL

  • 棧提供 pop和push等接口, 不提供走訪功能
  • 也不提供迭代器, 不像map和set可以使用迭代器遍歷,往往不被歸類為容器,而是容器適配器
  • 棧的內(nèi)部實(shí)現(xiàn)結(jié)構(gòu)可以使用 verctor、list 和 deque(默認(rèn))
  • 可以在初始化的時(shí)候指定使用哪種底層實(shí)現(xiàn)
std::stack<int, std::vector<int> > third;  // 使用vector為底層容器的棧
std::queue<int, std::list<int>> third; // 定義以list為底層容器的隊(duì)列

第10天-代碼隨想錄刷題訓(xùn)練-第五章 棧和隊(duì)列- ● 理論基礎(chǔ) ● 232.用棧實(shí)現(xiàn)隊(duì)列 ● 225. 用隊(duì)列實(shí)現(xiàn)棧
棧的api
stack 包含在 頭文件中
成員函數(shù)
- top() 返回頭部元素
- empty() 檢查是否為空 size() 返回容納的元素
- push() 頂層插入元素, emplace() 在頂層構(gòu)造元素 pop() 返回為void,直接刪除元素 swap()

2. 用兩個(gè)棧實(shí)現(xiàn)隊(duì)列

LeetCode 鏈接

  • 注意點(diǎn)
    • pop返回的是void,要彈出并獲取頂部的值應(yīng)該先top再pop
    • 兩個(gè)棧有一個(gè)不為空就返回false,因此是 is.empty() && os.empty()
      實(shí)現(xiàn)思路圖:
      第10天-代碼隨想錄刷題訓(xùn)練-第五章 棧和隊(duì)列- ● 理論基礎(chǔ) ● 232.用棧實(shí)現(xiàn)隊(duì)列 ● 225. 用隊(duì)列實(shí)現(xiàn)棧
class MyQueue {
public:
    MyQueue() {
    }

    stack<int> is;
    stack<int> os;
    
    void push(int x) {
        // 將數(shù)據(jù)直接壓入is 棧
        is.push(x);
    }
    
    int pop() {
        // 得先判斷os中是否還有元素,如果有直接彈出,否則從is中彈出壓入到os
        // 先將is棧中的內(nèi)容 逐個(gè)彈出 壓入 os棧,知道所有is中都空則彈出os棧的第一個(gè)元素
        if(os.empty()){
            while(!(is.empty())){
                os.push(is.top());
                is.pop();
            }
        }
        int top = os.top();
        os.pop();
        return top;     
    }
    
    int peek() {
        if(os.empty()){
            while(!(is.empty())){
                os.push(is.top());
                is.pop();
            }
        }
        return os.top();
    }
    
    bool empty() {
        return os.empty() && is.empty();
    }
};

/**
 * Your MyQueue object will be instantiated and called as such:
 * MyQueue* obj = new MyQueue();
 * obj->push(x);
 * int param_2 = obj->pop();
 * int param_3 = obj->peek();
 * bool param_4 = obj->empty();
 */

3. 兩個(gè)隊(duì)列實(shí)現(xiàn)棧

LeetCode
queue api
第10天-代碼隨想錄刷題訓(xùn)練-第五章 棧和隊(duì)列- ● 理論基礎(chǔ) ● 232.用棧實(shí)現(xiàn)隊(duì)列 ● 225. 用隊(duì)列實(shí)現(xiàn)棧

class MyStack {
public:
    MyStack() {

    }
    queue<int> qi;
    queue<int> qo;

    void push(int x) {
        qi.push(x);
    }
    
    int pop() {
        int size = qi.size();
        while(--size){
            qo.push(qi.front());
            qi.pop();
        }
        int result = qi.front();
        qi.pop();

        while(!qo.empty()){
            qi.push(qo.front());
            qo.pop();
        }

        return result;
    }
    
    int top() {
        return qi.back();
    }
    
    bool empty() {
        return qi.empty() && qo.empty();
    }
};

/**
 * Your MyStack object will be instantiated and called as such:
 * MyStack* obj = new MyStack();
 * obj->push(x);
 * int param_2 = obj->pop();
 * int param_3 = obj->top();
 * bool param_4 = obj->empty();
 */

優(yōu)化,每次彈出的時(shí)候只需要將 彈出的元素重新添加到隊(duì)尾文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-444573.html

class MyStack {
public:
    MyStack() {

    }
    queue<int> qi;

    void push(int x) {
        qi.push(x);
    }
    
    int pop() {
        int size = qi.size();
        while(--size){
            qi.push(qi.front());
            qi.pop();
        }
        int result = qi.front();
        qi.pop();
        return result;
    }
    
    int top() {
        return qi.back();
    }
    
    bool empty() {
        return qi.empty();
    }
};

/**
 * Your MyStack object will be instantiated and called as such:
 * MyStack* obj = new MyStack();
 * obj->push(x);
 * int param_2 = obj->pop();
 * int param_3 = obj->top();
 * bool param_4 = obj->empty();
 */

到了這里,關(guān)于第10天-代碼隨想錄刷題訓(xùn)練-第五章 棧和隊(duì)列- ● 理論基礎(chǔ) ● 232.用棧實(shí)現(xiàn)隊(duì)列 ● 225. 用隊(duì)列實(shí)現(xiàn)棧的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 代碼隨想錄刷題

    代碼隨想錄刷題

    704. 二分查找 27. 移除元素

    2024年01月25日
    瀏覽(29)
  • 【代碼隨想錄】刷題Day36

    435. 無(wú)重疊區(qū)間 先從小到大排序,其實(shí)本題依然是求出共同區(qū)域,只不過(guò)題目需要我們刪除盡量少的區(qū)間。所以我們需要?jiǎng)h除的一定是范圍跨度大的并且跟其他有公共區(qū)間的區(qū)域。所以每次更新右邊范圍都需要考慮最小的范圍。 1.if(intervals[i][0]end),說(shuō)明有重復(fù)的區(qū)間,那么我

    2024年02月07日
    瀏覽(93)
  • 【代碼隨想錄】刷題Day41

    343. 整數(shù)拆分 1.dp數(shù)組的含義:第i個(gè)就表示當(dāng)前i能被拆分出相乘最大的整數(shù) 2.那么其實(shí),所謂的后續(xù)的i對(duì)應(yīng)的相乘最大整數(shù)其實(shí)就是前面的相乘最大整數(shù)拼湊而成,為了更好的區(qū)分我們將分離出來(lái)的數(shù)為j,那么我們的工作就是將一個(gè)又一個(gè)的j從i中剝離出,隨后相乘即可。那

    2024年02月07日
    瀏覽(23)
  • 【代碼隨想錄】刷題Day47

    198. 打家劫舍 1.dp數(shù)組含義:dp[i]為i位置下的最大能得到的價(jià)值 2.根據(jù)條件:相鄰不能偷。i位置的最大價(jià)值取決于i-1位置是否已經(jīng)偷過(guò)了。如果偷過(guò)了,i位置的最大價(jià)值就是dp[i-1],即i位置的物品不偷;如果沒(méi)有偷過(guò),i位置的最大價(jià)值就是dp[i-2]+nuvms[i],i位置的數(shù)和對(duì)應(yīng)的d

    2024年02月07日
    瀏覽(107)
  • 【代碼隨想錄】刷題Day31

    【代碼隨想錄】刷題Day31

    455. 分發(fā)餅干 貪心的思路就是:小的餅干盡量去匹配胃口小的孩子,這樣才能實(shí)現(xiàn)盡可能多孩子吃到。 那么代碼就很好寫了: 1.排序g和s,這樣方便查找小的數(shù) 2.餅干的位置不停遍歷,對(duì)應(yīng)我們需要一個(gè)ret代表當(dāng)前孩子位置 3.如果當(dāng)前位置為孩子的數(shù)量,說(shuō)明ret記錄下所有的

    2024年02月06日
    瀏覽(92)
  • 【代碼隨想錄】刷題Day35

    860. 檸檬水找零 1.如果第一個(gè)顧客沒(méi)有五元,那么直接返回false,因?yàn)榈曛鏖_(kāi)始沒(méi)有零錢 2.定義兩個(gè)int,一個(gè)記錄5元,一個(gè)記錄10元,隨后遍歷整個(gè)數(shù)組,會(huì)出現(xiàn)三種情況: 如果顧客給5元,直接num5加一 如果顧客給10元,判斷num5是否大于0,大于則num5--,num10++;反之返回false

    2024年02月06日
    瀏覽(22)
  • 代碼隨想錄刷題 Day14

    二叉法的前中后序的遍歷, 前中后所說(shuō)的是根節(jié)點(diǎn)輸出的順序;? 有兩種遍歷方式, 1. 遞歸法 (自己調(diào)用自己,本質(zhì)是用棧) 代碼比較簡(jiǎn)單,但是需要?jiǎng)?chuàng)建一個(gè)額外的函數(shù)來(lái)進(jìn)行自己調(diào)用自己的過(guò)程;用遞歸法的話三種遍歷方式只需要改變代碼的位置就可以。 Leetcode 對(duì)應(yīng)

    2024年02月08日
    瀏覽(26)
  • 【代碼隨想錄】刷題Day6

    242. 有效的字母異位詞 直接使用庫(kù)函數(shù)的multiset來(lái)判斷 其實(shí)沒(méi)什么好說(shuō)的,因?yàn)樽址兄貜?fù)的可以出現(xiàn)所以用的multiset 缺點(diǎn):確實(shí)浪費(fèi)空間,紅黑樹(shù)的插入刪除,浪費(fèi)時(shí)間 2.數(shù)組實(shí)現(xiàn) 26個(gè)小寫字母,而且是連續(xù)的,那么我們直接用數(shù)組來(lái)存儲(chǔ)也可以的 1.那么映射的方式也很

    2024年02月02日
    瀏覽(33)
  • 【代碼隨想錄】刷題Day4

    【代碼隨想錄】刷題Day4

    24. 兩兩交換鏈表中的節(jié)點(diǎn) 前后指針實(shí)現(xiàn) 1.沒(méi)有元素或者只有一個(gè)元素?zé)o意義 2.給出一個(gè)前驅(qū)prev,以及用來(lái)交換的兩個(gè)節(jié)點(diǎn)cur和next 3.我當(dāng)時(shí)是這么想的,如果兩個(gè)指針一起動(dòng),那么就要用cur和next同時(shí)判斷結(jié)束,也許這個(gè)條件會(huì)比較苛刻(我就煩這種邊界條件),所以我覺(jué)得動(dòng)一

    2023年04月22日
    瀏覽(37)
  • 代碼隨想錄刷題 Day15

    代碼隨想錄刷題 Day15

    1. 二叉樹(shù)遍歷的層序方法, 記住模板后可以做下面十道題,現(xiàn)在暫時(shí)只做了102; 102.二叉樹(shù)的層序遍歷 107.二叉樹(shù)的層次遍歷II 199.二叉樹(shù)的右視圖 637.二叉樹(shù)的層平均值 429.N叉樹(shù)的層序遍歷 515.在每個(gè)樹(shù)行中找最大值 116.填充每個(gè)節(jié)點(diǎn)的下一個(gè)右側(cè)節(jié)點(diǎn)指針 117.填充每個(gè)節(jié)點(diǎn)的

    2024年02月06日
    瀏覽(33)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包