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

【算法與數(shù)據(jù)結(jié)構(gòu)】232、LeetCode用棧實(shí)現(xiàn)隊(duì)列

這篇具有很好參考價(jià)值的文章主要介紹了【算法與數(shù)據(jù)結(jié)構(gòu)】232、LeetCode用棧實(shí)現(xiàn)隊(duì)列。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

所有的LeetCode題解索引,可以看這篇文章——【算法和數(shù)據(jù)結(jié)構(gòu)】LeetCode題解。

一、題目

【算法與數(shù)據(jù)結(jié)構(gòu)】232、LeetCode用棧實(shí)現(xiàn)隊(duì)列,算法,算法
【算法與數(shù)據(jù)結(jié)構(gòu)】232、LeetCode用棧實(shí)現(xiàn)隊(duì)列,算法,算法

二、解法

??思路分析:這道題要求我們用棧模擬隊(duì)列(工作上一定沒人這么搞)。程序當(dāng)中,push函數(shù)很好解決,直接將元素push進(jìn)輸入棧當(dāng)中。pop函數(shù)需要實(shí)現(xiàn)隊(duì)列先進(jìn)先出的操作,而棧是先進(jìn)后出。只用一個(gè)棧是無法實(shí)現(xiàn),需要兩個(gè)棧,一個(gè)輸入棧,一個(gè)輸出棧。輸入棧當(dāng)中,先進(jìn)棧的元素在棧底所以后出,此時(shí)我們將輸入棧的元素push進(jìn)輸出棧,先進(jìn)的元素就在棧頂,會(huì)先輸出,這樣就實(shí)現(xiàn)了先進(jìn)先出的隊(duì)列。peek函數(shù)復(fù)用了pop函數(shù),實(shí)現(xiàn)代碼縮減。最后empty函數(shù),只要輸入棧和輸出棧同時(shí)為空那么隊(duì)列就是空的。
??程序如下

class MyQueue {
public:
    stack<int> stIn;
    stack<int> stOut;
    MyQueue() { // 構(gòu)造函數(shù)

    }

    void push(int x) {
        stIn.push(x);
    }

    int pop() {
        if (stOut.empty()) {   // 只有當(dāng)Out棧為空的時(shí)候,才將In棧的元素全部導(dǎo)入Out棧
            while (!stIn.empty()) { 
                stOut.push(stIn.top());
                stIn.pop();
            }
        }
        int result = stOut.top();
        stOut.pop();
        return result;
    }

    int peek() {
        int res = this->pop();  // 直接使用已經(jīng)寫好的pop函數(shù)
        stOut.push(res);        // 已經(jīng)彈出,再添加回去
        return res;
    }

    bool empty() {
        return stIn.empty() && stOut.empty();
    }
};

復(fù)雜度分析:

  • 時(shí)間復(fù)雜度: push和empty為 O ( 1 ) O(1) O(1), pop和peek為 O ( n ) O(n) O(n)。
  • 空間復(fù)雜度: O ( n ) O(n) O(n)。

三、完整代碼

# include <iostream>
# include <stack>
using namespace std;

class MyQueue {
public:
    stack<int> stIn;
    stack<int> stOut;
    MyQueue() { // 構(gòu)造函數(shù)

    }

    void push(int x) {
        stIn.push(x);
    }

    int pop() {
        if (stOut.empty()) {   // 只有當(dāng)Out棧為空的時(shí)候,才將In棧的元素全部導(dǎo)入Out棧
            while (!stIn.empty()) { 
                stOut.push(stIn.top());
                stIn.pop();
            }
        }
        int result = stOut.top();
        stOut.pop();
        return result;
    }

    int peek() {
        int res = this->pop();  // 直接使用已經(jīng)寫好的pop函數(shù)
        stOut.push(res);        // 已經(jīng)彈出,再添加回去
        return res;
    }

    bool empty() {
        return stIn.empty() && stOut.empty();
    }
};

int main()
{
    int x = 10;
    MyQueue* obj = new MyQueue();
    obj->push(x);
    obj->push(x);
    int param_2 = obj->pop();
    int param_3 = obj->peek();
    bool param_4 = obj->empty();
	system("pause");
	return 0;
}

end文章來源地址http://www.zghlxwxcb.cn/news/detail-531235.html

到了這里,關(guān)于【算法與數(shù)據(jù)結(jié)構(gòu)】232、LeetCode用棧實(shí)現(xiàn)隊(duì)列的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(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)文章

  • 【leetcode】232. 用棧實(shí)現(xiàn)隊(duì)列

    【leetcode】232. 用棧實(shí)現(xiàn)隊(duì)列

    1.使用兩個(gè)棧結(jié)構(gòu)構(gòu)建隊(duì)列 我們需要自定義棧及其相關(guān)操作 棧結(jié)構(gòu)遵循后入先出的原則,隊(duì)列結(jié)構(gòu)遵循先入先出的原則 構(gòu)建具有兩個(gè)棧結(jié)構(gòu)的隊(duì)列,棧pushST用于數(shù)據(jù)的插入,棧popST用于數(shù)據(jù)的刪除 為棧結(jié)構(gòu)動(dòng)態(tài)開辟空間并初始化棧結(jié)構(gòu) 2.入隊(duì)操作 模擬入隊(duì)操作,即將所有元

    2024年02月12日
    瀏覽(20)
  • leetcode 232.用棧實(shí)現(xiàn)隊(duì)列

    leetcode 232.用棧實(shí)現(xiàn)隊(duì)列

    ?? leetcode鏈接:用棧實(shí)現(xiàn)隊(duì)列 1?? 思路和圖解: push: pop: peek: 和 pop 類似。 代碼: ? 棧和隊(duì)列相關(guān)接口代碼(可復(fù)制): 【數(shù)據(jù)結(jié)構(gòu)】棧和隊(duì)列

    2024年02月13日
    瀏覽(19)
  • 【創(chuàng)作贏紅包】LeetCode:232. 用棧實(shí)現(xiàn)隊(duì)列

    【創(chuàng)作贏紅包】LeetCode:232. 用棧實(shí)現(xiàn)隊(duì)列

    ??道阻且長(zhǎng),行則將至。?? ??算法,不如說它是一種思考方式?? 算法專欄: ????123 題目描述 :請(qǐng)你僅使用兩個(gè)棧實(shí)現(xiàn)先入先出隊(duì)列。隊(duì)列應(yīng)當(dāng)支持一般隊(duì)列支持的所有操作(push、pop、peek、empty): 實(shí)現(xiàn) MyQueue 類: void push(int x) 將元素 x 推到隊(duì)列的末尾 int pop() 從隊(duì)列

    2023年04月12日
    瀏覽(16)
  • 【用隊(duì)列實(shí)現(xiàn)?!俊居脳?shí)現(xiàn)隊(duì)列】Leetcode 232 225

    【用隊(duì)列實(shí)現(xiàn)?!俊居脳?shí)現(xiàn)隊(duì)列】Leetcode 232 225

    ---------------????題目鏈接 用隊(duì)列實(shí)現(xiàn)棧????------------------- ---------------????題目鏈接 用棧實(shí)現(xiàn)隊(duì)列????-------------------

    2024年01月20日
    瀏覽(20)
  • LeetCode 232.用棧實(shí)現(xiàn)隊(duì)列(詳解) (???.??)

    LeetCode 232.用棧實(shí)現(xiàn)隊(duì)列(詳解) (???.??)

    創(chuàng)建兩個(gè)棧,一個(gè)用于入數(shù)據(jù),一個(gè)用于出數(shù)據(jù)。分別是pushST和popST; 1.如果是入數(shù)據(jù)就直接入進(jìn)pushST 2.如果是出數(shù)據(jù),先檢查popST中有無數(shù)據(jù),如果有數(shù)據(jù),就直接出。如果沒數(shù)據(jù),就將pushST中的數(shù)據(jù)放進(jìn)popST中,再?gòu)膒opST中出數(shù)據(jù)。 當(dāng)pushST中的數(shù)據(jù)入到popST時(shí),數(shù)據(jù)是順序的

    2024年01月24日
    瀏覽(18)
  • Day10|LeetCode232.用棧實(shí)現(xiàn)隊(duì)列、LeetCode 225. 用隊(duì)列實(shí)現(xiàn)棧

    Day10|LeetCode232.用棧實(shí)現(xiàn)隊(duì)列、LeetCode 225. 用隊(duì)列實(shí)現(xiàn)棧

    棧和隊(duì)列理論基礎(chǔ): 隊(duì)列是先進(jìn)先出,棧是先進(jìn)后出。如圖所示: 棧和隊(duì)列是STL(C++標(biāo)準(zhǔn)庫(kù))里面的兩個(gè)數(shù)據(jù)結(jié)構(gòu)。 棧是以底層容器完成其所有的工作,對(duì)外提供統(tǒng)一的接口,底層容器是可插拔的(也就是說我們可以控制使用哪種容器來實(shí)現(xiàn)棧的功能)。? 棧的內(nèi)部結(jié)構(gòu),

    2024年02月14日
    瀏覽(22)
  • 棧和隊(duì)列OJ題:LeetCode--232.用棧實(shí)現(xiàn)隊(duì)列

    棧和隊(duì)列OJ題:LeetCode--232.用棧實(shí)現(xiàn)隊(duì)列

    朋友們、伙計(jì)們,我們又見面了,今天給大家?guī)淼氖荓eetCode--232.用棧實(shí)現(xiàn)隊(duì)列 數(shù) 據(jù) 結(jié) 構(gòu) 專 欄:數(shù)據(jù)結(jié)構(gòu) 個(gè)? ? 人? ?主? ? 頁 :stackY、 LeetCode 專? 欄 :LeetCode刷題訓(xùn)練營(yíng) LeetCode--232.用棧實(shí)現(xiàn)隊(duì)列:https://leetcode.cn/problems/implement-queue-using-stacks/ 目錄 1.題目介紹 2.實(shí)例演示

    2024年02月05日
    瀏覽(25)
  • Leetcode的AC指南 —— 棧與隊(duì)列:232.用棧實(shí)現(xiàn)隊(duì)列

    Leetcode的AC指南 —— 棧與隊(duì)列:232.用棧實(shí)現(xiàn)隊(duì)列

    摘要: **Leetcode的AC指南 —— 棧與隊(duì)列:232.用棧實(shí)現(xiàn)隊(duì)列 **。題目介紹:請(qǐng)你僅使用兩個(gè)棧實(shí)現(xiàn)先入先出隊(duì)列。隊(duì)列應(yīng)當(dāng)支持一般隊(duì)列支持的所有操作(push、pop、peek、empty): 實(shí)現(xiàn) MyQueue 類: void push(int x) 將元素 x 推到隊(duì)列的末尾 int pop() 從隊(duì)列的開頭移除并返回元素 int

    2024年01月20日
    瀏覽(14)
  • 【數(shù)據(jù)結(jié)構(gòu)】用棧實(shí)現(xiàn)隊(duì)列

    【數(shù)據(jù)結(jié)構(gòu)】用棧實(shí)現(xiàn)隊(duì)列

    前言:本節(jié)博客分享了用棧實(shí)現(xiàn)隊(duì)列效果的思路以及代碼,有需要借鑒即可。 LINK 如果要用棧實(shí)現(xiàn)隊(duì)列,我們直到棧是先入后出的一個(gè)效果,所以我們可以用兩個(gè)棧,這樣逆轉(zhuǎn)兩次數(shù)不就是入棧之前數(shù)組的順序嘛。下面是一些圖輔助理解: 完。

    2024年03月10日
    瀏覽(59)
  • 數(shù)據(jù)結(jié)構(gòu)-用棧實(shí)現(xiàn)隊(duì)列

    數(shù)據(jù)結(jié)構(gòu)-用棧實(shí)現(xiàn)隊(duì)列

    前言: 請(qǐng)你僅使用兩個(gè)棧實(shí)現(xiàn)先入先出隊(duì)列。隊(duì)列應(yīng)當(dāng)支持一般隊(duì)列支持的所有操作(push、pop、peek、empty): 實(shí)現(xiàn) MyQueue 類: void push(int x) 將元素 x 推到隊(duì)列的末尾 int pop() 從隊(duì)列的開頭移除并返回元素 int peek() 返回隊(duì)列開頭的元素 boolean empty() 如果隊(duì)列為空,返回 true ;否

    2023年04月08日
    瀏覽(53)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包