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

劍指 Offer 09. 用兩個棧實現(xiàn)隊列

這篇具有很好參考價值的文章主要介紹了劍指 Offer 09. 用兩個棧實現(xiàn)隊列。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


?? 作者簡介:一名在后端領域?qū)W習,并渴望能夠?qū)W有所成的追夢人。
?? 個人主頁:不 良
?? 系列專欄:??劍指 Offer ???Linux
?? 學習格言:博觀而約取,厚積而薄發(fā)
?? 歡迎進來的小伙伴,如果小伙伴們在學習的過程中,發(fā)現(xiàn)有需要糾正的地方,煩請指正,希望能夠與諸君一同成長! ??


劍指 Offer 09. 用兩個棧實現(xiàn)隊列

題目:

用兩個棧實現(xiàn)一個隊列。隊列的聲明如下,請實現(xiàn)它的兩個函數(shù) appendTaildeleteHead ,分別完成在隊列尾部插入整數(shù)和在隊列頭部刪除整數(shù)的功能。(若隊列中沒有元素,deleteHead 操作返回 -1 )

示例1:

輸入:
[“CQueue”,“appendTail”,“deleteHead”,“deleteHead”,“deleteHead”]
[[],[3],[],[],[]]
輸出:[null,null,3,-1,-1]

示例2:

輸入:
[“CQueue”,“deleteHead”,“appendTail”,“appendTail”,“deleteHead”,“deleteHead”]
[[],[],[5],[2],[],[]]
輸出:[null,-1,null,null,5,2]

提示:

  • 1 <= values <= 10000
  • 最多會對appendTail、deleteHead進行 10000 次調(diào)用

思路一:

雙棧。棧是先進后出的機構,隊列是先進先出的結構。

CQueue()作為一個構造函數(shù),在本題中不用管。

1.定義兩個棧pushstpopst,將pushst棧作為輸入棧用于appendTail操作,popst棧作為輸出棧用于deleteHead操作;

2.進行appendTail操作時,直接將數(shù)據(jù)壓入pushst棧中;

3.進行deleteHead操作時:

  • 先檢查popstpushst是否為空,如果為空直接返回-1;

  • 如果popst為空且pushst不為空,將pushst中的數(shù)據(jù)從棧頂開始放入popst中,然后再進行刪除返回操作。

  • 如果popst不為空,直接刪除并返回棧頂元素。

代碼如下:

class CQueue {
public:
    CQueue() {
        
    }
    
    void appendTail(int value) {
        pushst.push(value);
    }
    
    int deleteHead() {
        if(pushst.empty() && popst.empty())
            return -1;
        //如果popst中為空,則將pushst中的數(shù)據(jù)都倒入popst中
        if(popst.empty() && !pushst.empty())
        {
            while(!pushst.empty())
            {
                int tmp = pushst.top();
                popst.push(tmp);
                pushst.pop();
            }
        }
        //如果popst中不為空,直接刪除并返回
        int tmp = popst.top();
        popst.pop();
        return tmp;
    }
private:
    stack<int> pushst;//實例化一個pushst棧,用于壓入數(shù)據(jù)
    stack<int> popst;//實例化一個popst棧,用于刪除數(shù)據(jù)
};

插入:

時間復雜度:O(1)

空間復雜度:O(1)

刪除:

時間復雜度:O(N),要將pushst中的數(shù)據(jù)全部壓入popst中。

空間復雜度:O(N),使用了輔助棧的空間。文章來源地址http://www.zghlxwxcb.cn/news/detail-475780.html

到了這里,關于劍指 Offer 09. 用兩個棧實現(xiàn)隊列的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • 劍指 Offer 52. 兩個鏈表的第一個公共節(jié)點

    劍指 Offer 52. 兩個鏈表的第一個公共節(jié)點

    ?? 作者簡介:一名在后端領域?qū)W習,并渴望能夠?qū)W有所成的追夢人。 ?? 個人主頁:不 良 ?? 系列專欄:??劍指 Offer ???Linux ?? 學習格言:博觀而約取,厚積而薄發(fā) ?? 歡迎進來的小伙伴,如果小伙伴們在學習的過程中,發(fā)現(xiàn)有需要糾正的地方,煩請指正,希望能夠與諸

    2024年02月10日
    瀏覽(21)
  • (鏈表) 劍指 Offer 25. 合并兩個排序的鏈表 ——【Leetcode每日一題】

    (鏈表) 劍指 Offer 25. 合并兩個排序的鏈表 ——【Leetcode每日一題】

    難度:簡單 輸入兩個遞增排序的鏈表,合并這兩個鏈表并使新鏈表中的節(jié)點仍然是遞增排序的。 示例1: 輸入:1-2-4, 1-3-4 輸出:1-1-2-3-4-4 限制 : 0 = 鏈表長度 = 1000 注意:本題與 21. 合并兩個有序鏈表 相同 ??思路: 法一:遞歸 將該問題可以分解成子鏈表,只比較當前 l1 鏈

    2024年02月15日
    瀏覽(21)
  • (鏈表) 劍指 Offer 52. 兩個鏈表的第一個公共節(jié)點 ——【Leetcode每日一題】

    (鏈表) 劍指 Offer 52. 兩個鏈表的第一個公共節(jié)點 ——【Leetcode每日一題】

    難度:簡單 輸入兩個鏈表,找出它們的第一個公共節(jié)點。 如下面的兩個鏈表: 在節(jié)點 c1 開始相交。 示例 1: 輸入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3 輸出:Reference of the node with value = 8 輸入解釋:相交節(jié)點的值為 8 (注意,如果兩個列表相交則

    2024年02月15日
    瀏覽(27)
  • 【算法】雙指針——leetcode盛最多水的容器、劍指Offer57和為s的兩個數(shù)字

    【算法】雙指針——leetcode盛最多水的容器、劍指Offer57和為s的兩個數(shù)字

    盛水最多的容器 (1)暴力解法 ??算法思路:我們枚舉出所有的容器大小,取最大值即可。 ??容器容積的計算方式: ??設兩指針 i , j ,分別指向水槽板的最左端以及最右端,此時容器的寬度為 j - i 。由于容器的高度由兩板中的較短的板決定,因此可得容積公式 :

    2024年02月13日
    瀏覽(24)
  • 劍指offer(C++)-JZ56:數(shù)組中只出現(xiàn)一次的兩個數(shù)字(算法-位運算)

    劍指offer(C++)-JZ56:數(shù)組中只出現(xiàn)一次的兩個數(shù)字(算法-位運算)

    作者:翟天保Steven 版權聲明:著作權歸作者所有,商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權,非商業(yè)轉(zhuǎn)載請注明出處 題目描述: 一個整型數(shù)組里除了兩個數(shù)字只出現(xiàn)一次,其他的數(shù)字都出現(xiàn)了兩次。請寫程序找出這兩個只出現(xiàn)一次的數(shù)字。 數(shù)據(jù)范圍:數(shù)組長度2≤n≤1000,數(shù)組中每個數(shù)

    2024年02月10日
    瀏覽(22)
  • 劍指 Offer 59 - I. 滑動窗口的最大值 / LeetCode 239. 滑動窗口最大值(優(yōu)先隊列 / 單調(diào)隊列)

    鏈接:劍指 Offer 59 - I. 滑動窗口的最大值;LeetCode 239. 滑動窗口最大值 難度:困難 下一篇:劍指 Offer 59 - II. 隊列的最大值(單調(diào)隊列) 給你一個整數(shù)數(shù)組 nums,有一個大小為 k 的滑動窗口從數(shù)組的最左側(cè)移動到數(shù)組的最右側(cè)。你只可以看到在滑動窗口內(nèi)的 k 個數(shù)字?;瑒哟?/p>

    2024年02月15日
    瀏覽(21)
  • 《劍指 Offer》專項突破版 - 面試題 47 : 二叉樹剪枝(C++ 實現(xiàn))

    《劍指 Offer》專項突破版 - 面試題 47 : 二叉樹剪枝(C++ 實現(xiàn))

    題目鏈接 :LCR 047. 二叉樹剪枝 - 力扣(LeetCode) 題目 : 一棵二叉樹的所有節(jié)點的值要么是 0 要么是 1,請剪除該二叉樹中 所有節(jié)點的值全都是 0 的子樹 。例如,在剪除下圖 (a) 中二叉樹中所有節(jié)點值都為 0 的子樹之后的結果如下圖 (b) 所示。 分析 : 首先分析哪些子樹會被

    2024年02月20日
    瀏覽(15)
  • 《劍指 Offer》專項突破版 - 面試題 4 : 只出現(xiàn)一次的數(shù)字(C++ 實現(xiàn))

    題目鏈接 :137. 只出現(xiàn)一次的數(shù)字 II - 力扣(LeetCode) 題目 : 輸入一個整數(shù)數(shù)組,數(shù)組中只有一個數(shù)字出現(xiàn)了一次,而其他數(shù)字都出現(xiàn)了 3 次。請找出那個只出現(xiàn)一次的數(shù)字。例如,如果輸入的數(shù)組為 [0, 1, 0, 1, 0, 1, 100],則只出現(xiàn)一次的數(shù)字是 100。 分析 : 這個題目有一個

    2024年02月02日
    瀏覽(19)
  • 《劍指 Offer》專項突破版 - 面試題 13 : 二維子矩陣的數(shù)字之和(C++ 實現(xiàn))- 二維前綴和

    《劍指 Offer》專項突破版 - 面試題 13 : 二維子矩陣的數(shù)字之和(C++ 實現(xiàn))- 二維前綴和

    題目鏈接 :LCR 013. 二維區(qū)域和檢索 - 矩陣不可變 - 力扣(LeetCode) 題目 : 輸入一個二維矩陣,如何計算給定左上角坐標和右下角坐標的子矩陣的數(shù)字之和?對于同一個二維矩陣,計算子矩陣的數(shù)字之和的函數(shù)可能由于輸入不同的坐標而反復調(diào)用多次。 例如,對于下圖中的二

    2024年01月18日
    瀏覽(17)
  • 《劍指 Offer》專項突破版 - 面試題 15 : 字符串中的所有變位詞(C++ 實現(xiàn))

    題目鏈接 :LCR 015. 找到字符串中所有字母異位詞 - 力扣(LeetCode) 題目 : 輸入字符串 s1 和 s2,如何找出字符串 s2 的所有變位詞在字符串 s1 中的起始下標?假設兩個字符串中只包含英文小寫字母。例如,字符串 s1 為 \\\"cbadabacg\\\",字符串 s2 為 \\\"abc\\\",字符串 s2 的兩個變位詞 \\\"c

    2024年01月18日
    瀏覽(32)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領取紅包

二維碼2

領紅包