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

方法一:雙棧
思路和算法

維護(hù)兩個(gè)棧,第一個(gè)棧支持插入操作,第二個(gè)棧支持刪除操作禀横。

根據(jù)棧先進(jìn)后出的特性,我們每次往第一個(gè)棧里插入元素后粥血,第一個(gè)棧的底部元素是最后插入的元素柏锄,第一個(gè)棧的頂部元素是下一個(gè)待刪除的元素。為了維護(hù)隊(duì)列先進(jìn)先出的特性立莉,我們引入第二個(gè)棧绢彤,用第二個(gè)棧維護(hù)待刪除的元素,在執(zhí)行刪除操作的時(shí)候我們首先看下第二個(gè)棧是否為空蜓耻。如果為空茫舶,我們將第一個(gè)棧里的元素一個(gè)個(gè)彈出插入到第二個(gè)棧里,這樣第二個(gè)棧里元素的順序就是待刪除的元素的順序刹淌,要執(zhí)行刪除操作的時(shí)候我們直接彈出第二個(gè)棧的元素返回即可饶氏。

成員變量

維護(hù)兩個(gè)棧 stack1 和 stack2,其中 stack1 支持插入操作有勾,stack2 支持刪除操作
構(gòu)造方法

初始化 stack1 和 stack2 為空
插入元素

插入元素對(duì)應(yīng)方法 appendTail

stack1 直接插入元素
刪除元素

刪除元素對(duì)應(yīng)方法 deleteHead

如果 stack2 為空疹启,則將 stack1 里的所有元素彈出插入到 stack2 里
如果 stack2 仍為空,則返回 -1蔼卡,否則從 stack2 彈出一個(gè)元素并返回

image.png
class CQueue {
    Deque<Integer> stack1;
    Deque<Integer> stack2;
    
    public CQueue() {
        stack1 = new LinkedList<Integer>();
        stack2 = new LinkedList<Integer>();
    }
    
    public void appendTail(int value) {
        stack1.push(value);
    }
    
    public int deleteHead() {
        // 如果第二個(gè)棧為空
        if (stack2.isEmpty()) {
            while (!stack1.isEmpty()) {
                stack2.push(stack1.pop());
            }
        } 
        if (stack2.isEmpty()) {
            return -1;
        } else {
            int deleteItem = stack2.pop();
            return deleteItem;
        }
    }
}

復(fù)雜度分析

時(shí)間復(fù)雜度:對(duì)于插入和刪除操作喊崖,時(shí)間復(fù)雜度均為 O(1)O(1)。插入不多說(shuō),對(duì)于刪除操作荤懂,雖然看起來(lái)是 O(n)O(n) 的時(shí)間復(fù)雜度茁裙,但是仔細(xì)考慮下每個(gè)元素只會(huì)「至多被插入和彈出 stack2 一次」,因此均攤下來(lái)每個(gè)元素被刪除的時(shí)間復(fù)雜度仍為 O(1)O(1)节仿。

空間復(fù)雜度:O(n)O(n)晤锥。需要使用兩個(gè)棧存儲(chǔ)已有的元素。

作者:LeetCode-Solution
鏈接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/solution/mian-shi-ti-09-yong-liang-ge-zhan-shi-xian-dui-l-3/
來(lái)源:力扣(LeetCode)
著作權(quán)歸作者所有廊宪。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)矾瘾,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末箭启,一起剝皮案震驚了整個(gè)濱河市壕翩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌傅寡,老刑警劉巖戈泼,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異赏僧,居然都是意外死亡大猛,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)淀零,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)挽绩,“玉大人,你說(shuō)我怎么就攤上這事驾中“埃” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵肩民,是天一觀的道長(zhǎng)唠亚。 經(jīng)常有香客問(wèn)我,道長(zhǎng)持痰,這世上最難降的妖魔是什么灶搜? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮工窍,結(jié)果婚禮上割卖,老公的妹妹穿的比我還像新娘。我一直安慰自己患雏,他們只是感情好鹏溯,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著淹仑,像睡著了一般丙挽。 火紅的嫁衣襯著肌膚如雪肺孵。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天颜阐,我揣著相機(jī)與錄音悬槽,去河邊找鬼。 笑死瞬浓,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蓬坡。 我是一名探鬼主播猿棉,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼屑咳!你這毒婦竟也來(lái)了萨赁?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤兆龙,失蹤者是張志新(化名)和其女友劉穎杖爽,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體紫皇,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡慰安,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了聪铺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片化焕。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖铃剔,靈堂內(nèi)的尸體忽然破棺而出撒桨,到底是詐尸還是另有隱情,我是刑警寧澤键兜,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布凤类,位于F島的核電站,受9級(jí)特大地震影響普气,放射性物質(zhì)發(fā)生泄漏谜疤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一现诀、第九天 我趴在偏房一處隱蔽的房頂上張望茎截。 院中可真熱鬧,春花似錦赶盔、人聲如沸企锌。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)撕攒。三九已至陡鹃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抖坪,已是汗流浹背萍鲸。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留擦俐,地道東北人脊阴。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蚯瞧,于是被迫代替她去往敵國(guó)和親嘿期。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345