国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

劍指offer/LintCode494_用兩個(gè)隊(duì)列實(shí)現(xiàn)一個(gè)棧

rose / 1945人閱讀

摘要:劍指用兩個(gè)隊(duì)列實(shí)現(xiàn)一個(gè)棧聲明文章均為本人技術(shù)筆記,轉(zhuǎn)載請(qǐng)注明出處解題思路實(shí)現(xiàn)功能用兩個(gè)隊(duì)列實(shí)現(xiàn)一個(gè)棧,實(shí)現(xiàn),,和方法解題思路假設(shè)有隊(duì)列和實(shí)現(xiàn)棧的操作實(shí)現(xiàn)棧操作始終用來入隊(duì)實(shí)現(xiàn)實(shí)現(xiàn)棧的方法模擬棧的過程中,保證兩個(gè)隊(duì)列中始終有一個(gè)隊(duì)列為空,另一

劍指offer/LintCode494_用兩個(gè)隊(duì)列實(shí)現(xiàn)一個(gè)棧 聲明

文章均為本人技術(shù)筆記,轉(zhuǎn)載請(qǐng)注明出處https://segmentfault.com/u/yzwall

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

用兩個(gè)隊(duì)列實(shí)現(xiàn)一個(gè)棧,實(shí)現(xiàn)push(element)pop(),top()isEmpty()方法;

解題思路

假設(shè)有隊(duì)列queue1queue2;

實(shí)現(xiàn)棧的push(element)操作

實(shí)現(xiàn)棧push(element)操作:始終用來queue1入隊(duì)實(shí)現(xiàn);

實(shí)現(xiàn)棧的pop()方法

模擬棧的過程中,保證兩個(gè)隊(duì)列中始終有一個(gè)隊(duì)列為空,另一個(gè)隊(duì)列不空,空棧時(shí)兩隊(duì)列全部為空;;

queue1queue2運(yùn)行過程中有時(shí)充當(dāng)from,有時(shí)充當(dāng)to;

非空隊(duì)列from中所有元素依次出隊(duì)并入隊(duì)to隊(duì)列中,直到from中只剩下一個(gè)元素,

實(shí)現(xiàn)pop()操作:彈出from中最后一個(gè)元素;

實(shí)現(xiàn)top()操作:保存from中最后一個(gè)元素并返回,from彈出并入隊(duì)to隊(duì)列中(保證每次操作完成后,兩個(gè)隊(duì)列中始終有一個(gè)隊(duì)列為空,另一個(gè)隊(duì)列不空,空棧除外);

注意點(diǎn)

使用java.util.ArrayDeque實(shí)現(xiàn)隊(duì)列時(shí),切記用offer()方法入隊(duì)而不用push()方法,用poll()方法出隊(duì)而不用pop()方法;

題目鏈接

lintcode 494: http://www.lintcode.com/en/problem/implement-stack-by-two-queues/;

Java代碼
/**
 * 用兩個(gè)隊(duì)列實(shí)現(xiàn)一個(gè)棧
 * http://www.lintcode.com/en/problem/implement-stack-by-two-queues/
 * @author yzwall
 */
import java.util.ArrayDeque;
class Stack {
    private ArrayDeque queue1;
    private ArrayDeque queue2;
    int top;
    
    Stack() {
        this.queue1 = new ArrayDeque<>();
        this.queue2 = new ArrayDeque<>();
    }
    
    // queue1始終負(fù)責(zé)實(shí)現(xiàn)棧的push操作
    public void push(int element) {
        queue1.offer(element);
    }
    
    // 將from隊(duì)列元素出隊(duì),并依次入隊(duì)到to隊(duì)列,直到from隊(duì)列中只有一個(gè)元素
    public void move(ArrayDeque from,
                     ArrayDeque to) {
        while (from.size() > 1) {
            to.offer(from.poll());
        }
    }
    
    public void pop() {
        if (!isEmpty()) {
            if (!queue1.isEmpty()) {
                move(queue1, queue2);
                // queue1隊(duì)列pop后為空
                queue1.poll();
            } else if (!queue2.isEmpty()) {
                move(queue2, queue1);
                // queue1隊(duì)列pop后為空
                queue2.poll();
            }
        }
    }
    
    public int top() {
        if (!isEmpty()) {
            if (!queue1.isEmpty()) {
                move(queue1, queue2);
                // 獲取模擬棧頂元素,清空棧頂所在隊(duì)列
                top = queue1.peek();
                queue2.offer(queue1.poll());
            } else if (!queue2.isEmpty()) {
                move(queue2, queue1);
                // 獲取模擬棧頂元素,清空棧頂所在隊(duì)列
                top = queue2.peek();
                queue1.offer(queue2.poll());
            }
            return top;
        }
        return 0;
    }
    
    public boolean isEmpty() {
        return queue1.isEmpty() && queue2.isEmpty();
    }
}

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/67039.html

相關(guān)文章

  • 劍指offer/LintCode40_兩個(gè)模擬隊(duì)列

    摘要:劍指用兩個(gè)棧模擬隊(duì)列聲明文章均為本人技術(shù)筆記,轉(zhuǎn)載請(qǐng)注明出處解題思路實(shí)現(xiàn)功能用兩個(gè)棧模擬實(shí)現(xiàn)一個(gè)隊(duì)列的,和操作解題思路假設(shè)有兩個(gè)棧隊(duì)列實(shí)現(xiàn)始終用入棧實(shí)現(xiàn)隊(duì)列和實(shí)現(xiàn)由于依次出棧并壓入中,恰好保證中順序與模擬隊(duì)列順序一致,始終保證棧頂元素為模擬 劍指offer/LintCode40_用兩個(gè)棧模擬隊(duì)列 聲明 文章均為本人技術(shù)筆記,轉(zhuǎn)載請(qǐng)注明出處https://segmentfault.com...

    bawn 評(píng)論0 收藏0
  • 劍指offer/LintCode12_最小

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

    Betta 評(píng)論0 收藏0
  • 【轉(zhuǎn)】《劍指Offer》JavaScript實(shí)戰(zhàn)——兩個(gè)實(shí)現(xiàn)隊(duì)列

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

    senntyou 評(píng)論0 收藏0
  • 劍指offer】6.兩個(gè)實(shí)現(xiàn)隊(duì)列

    摘要:題目用兩個(gè)棧來實(shí)現(xiàn)一個(gè)隊(duì)列,完成隊(duì)列的和操作。隊(duì)列中的元素為類型。基本思路棧用于入隊(duì)列存儲(chǔ)棧出隊(duì)列時(shí)將棧的數(shù)據(jù)依次出棧,并入棧到棧中棧出棧即棧的底部數(shù)據(jù)即隊(duì)列要出的數(shù)據(jù)。注意棧為空才能補(bǔ)充棧的數(shù)據(jù),否則會(huì)打亂當(dāng)前的順序。 題目 用兩個(gè)棧來實(shí)現(xiàn)一個(gè)隊(duì)列,完成隊(duì)列的Push和Pop操作。 隊(duì)列中的元素為int類型。 基本思路 棧1: 用于入隊(duì)列存儲(chǔ) 棧2: 出隊(duì)列時(shí)將棧1的數(shù)據(jù)依次出棧,并...

    fredshare 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<