成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

劍指offer/LintCode40_用兩個棧模擬隊列

bawn / 3125人閱讀

摘要:劍指用兩個棧模擬隊列聲明文章均為本人技術筆記,轉載請注明出處解題思路實現(xiàn)功能用兩個棧模擬實現(xiàn)一個隊列的,和操作解題思路假設有兩個棧隊列實現(xiàn)始終用入棧實現(xiàn)隊列和實現(xiàn)由于依次出棧并壓入中,恰好保證中順序與模擬隊列順序一致,始終保證棧頂元素為模擬

劍指offer/LintCode40_用兩個棧模擬隊列 聲明

文章均為本人技術筆記,轉載請注明出處https://segmentfault.com/u/yzwall

解題思路 實現(xiàn)功能:

用兩個棧模擬實現(xiàn)一個隊列的push(element)pop()top()操作;

解題思路

假設有兩個棧stack1, stack2

隊列push(element)實現(xiàn):始終用stack1入棧實現(xiàn)

隊列pop()top()實現(xiàn):由于stack1依次出棧并壓入stack2中,恰好保證stack2中順序與模擬隊列順序一致,始終保證stack2棧頂元素為模擬隊列隊首

當stack2為空時,stack1中全部元素依次出棧并入棧stack2,最后直接彈出棧頂或者只返回棧頂數(shù)據;

當stack2不空時,直接彈出棧頂或者只返回棧頂數(shù)據;

注意點

對空棧進行pop()top()操作時考慮異常情況;

實現(xiàn)棧棄用java.util.stack,選用java.util.ArrayDeque實現(xiàn);

題目鏈接

lintcode 40: http://www.lintcode.com/en/problem/implement-queue-by-two-stacks/

劍指offer 面試題7

Java代碼
import java.util.ArrayDeque;

/**
 * 用兩個棧實現(xiàn)一個隊列
 * http://www.lintcode.com/en/problem/implement-queue-by-two-stacks/
 * @author yzwall
 */
class MyQueue {
    private ArrayDeque stack1;
    private ArrayDeque stack2;
    
    MyQueue() {
        this.stack1 = new ArrayDeque<>();
        this.stack2 = new ArrayDeque<>();
    }
    
    public void push(int element) {
        stack1.push(element);
    }
    
    public int pop() {
        if (stack2.isEmpty()) {
            while (!stack1.isEmpty()) {
                stack2.push(stack1.pop());
            }
        }
        return stack2.pop();
    }
    
    public int top() {
        if (stack2.isEmpty()) {
            while (!stack1.isEmpty()) {
                stack2.push(stack1.pop());
            }            
        }
        return stack2.peek();
    }
}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/67066.html

相關文章

  • 劍指offer/LintCode494_兩個隊列實現(xiàn)一個

    摘要:劍指用兩個隊列實現(xiàn)一個棧聲明文章均為本人技術筆記,轉載請注明出處解題思路實現(xiàn)功能用兩個隊列實現(xiàn)一個棧,實現(xiàn),,和方法解題思路假設有隊列和實現(xiàn)棧的操作實現(xiàn)棧操作始終用來入隊實現(xiàn)實現(xiàn)棧的方法模擬棧的過程中,保證兩個隊列中始終有一個隊列為空,另一 劍指offer/LintCode494_用兩個隊列實現(xiàn)一個棧 聲明 文章均為本人技術筆記,轉載請注明出處https://segmentfault....

    rose 評論0 收藏0
  • 劍指offer/LintCode12_最小

    摘要:劍指最小棧聲明文章均為本人技術筆記,轉載請注明出處解題思路實現(xiàn)功能實現(xiàn)一個最小棧,要求操作均為復雜度,解題思路用棧存儲數(shù)據用最小棧存儲中最小元素,保證棧頂元素與棧頂元素同步,表示此時最小值將與此時最小值比較,將更小的一方壓棧,保證中棧頂始終 劍指offer/LintCode12_最小棧 聲明 文章均為本人技術筆記,轉載請注明出處https://segmentfault.com/u/yz...

    Betta 評論0 收藏0
  • 【轉】《劍指Offer》JavaScript實戰(zhàn)——兩個實現(xiàn)隊列

    摘要:題目描述用兩個棧來實現(xiàn)一個隊列,完成隊列的和操作。隊列中的元素為類型。下面是實現(xiàn)代碼。 題目描述 ????用兩個棧來實現(xiàn)一個隊列,完成隊列的Push和Pop操作。 隊列中的元素為int類型。 解題方法 let stack1=[],//兩個數(shù)組模擬棧的行為 stack2=[]; function push(node) { // write code here //...

    senntyou 評論0 收藏0
  • 劍指offer】6.兩個實現(xiàn)隊列

    摘要:題目用兩個棧來實現(xiàn)一個隊列,完成隊列的和操作。隊列中的元素為類型?;舅悸窏S糜谌腙犃写鎯3鲫犃袝r將棧的數(shù)據依次出棧,并入棧到棧中棧出棧即棧的底部數(shù)據即隊列要出的數(shù)據。注意棧為空才能補充棧的數(shù)據,否則會打亂當前的順序。 題目 用兩個棧來實現(xiàn)一個隊列,完成隊列的Push和Pop操作。 隊列中的元素為int類型。 基本思路 棧1: 用于入隊列存儲 棧2: 出隊列時將棧1的數(shù)據依次出棧,并...

    fredshare 評論0 收藏0

發(fā)表評論

0條評論

bawn

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<