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

資訊專欄INFORMATION COLUMN

[Leetcode] Implement Stack using Queues 用隊列實現(xiàn)棧

ivan_qhz / 2450人閱讀

摘要:雙隊列法復雜度時間空間思路和類似,我們也可以用兩個隊列來模擬棧的操作。當時,我們將數(shù)字進非空的隊列就行了。操作和一樣,區(qū)別在于我們拿到最后一個數(shù)后,還要再把它進另一個隊列中。

雙隊列法 復雜度

時間 O(N) 空間 O(N)

思路

和Implement Queue using Stack類似,我們也可以用兩個隊列來模擬棧的操作。當push時,我們將數(shù)字offer進非空的隊列就行了。當pop時,因為要拿的是隊列最后一個數(shù),我們先將它前面的數(shù)offer進另一個隊列,然后多帶帶拿出最后一個數(shù),并且不再offer進另一個隊列,這樣,另一個隊列就少了最后一個數(shù),而我們也拿到了最后一個數(shù),而本來的隊列就變成空了,等待下次的pop操作來填滿。top操作和pop一樣,區(qū)別在于我們拿到最后一個數(shù)后,還要再把它offer進另一個隊列中。

代碼
class MyStack {
    
    Queue queue1;
    Queue queue2;
    int size;
    
    public MyStack(){
        this.queue1 = new LinkedList();
        this.queue2 = new LinkedList();
        this.size = 0;
    }
    
    // Push element x onto stack.
    public void push(int x) {
        if(queue1.isEmpty()){
            queue2.offer(x);
        } else {
            queue1.offer(x);
        }
        size++;
    }

    // Removes the element on top of the stack.
    public int pop() {
        if(size == 0){
            return -1;
        }
        int res = 0;
        // 將前面的數(shù)都offer進另一個隊列,然后拿出最后一個數(shù)
        if(queue1.isEmpty()){
            for(int i = 0; i < size - 1; i++){
                queue1.offer(queue2.poll());
            }
            res = queue2.poll();
        } else {
            for(int i = 0; i < size - 1; i++){
                queue2.offer(queue1.poll());
            }
            res = queue1.poll();
        }
        size--;
        return res;
    }

    // Get the top element.
    public int top() {
        if(size == 0){
            return -1;
        }
        // 先執(zhí)行pop
        int top = pop();
        // 然后將pop出來的數(shù)再塞回隊列就行了
        if(queue1.isEmpty()){
            queue2.offer(top);
        } else {
            queue1.offer(top);
        }
        // 注意size也要加1
        size++;
        return top;
    }

    // Return whether the stack is empty.
    public boolean empty() {
        return size == 0;
    }
}

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

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

相關(guān)文章

  • LeetCode 225:隊列實現(xiàn) Implement Stack using Queues

    摘要:下面是入棧時代碼獲得隊列長度反轉(zhuǎn)次數(shù)為隊列長度減一反轉(zhuǎn)語言沒有棧和隊列數(shù)據(jù)結(jié)構(gòu),只能用數(shù)組或雙端隊列實現(xiàn)。這類編程語言就壓根不需要用隊列實現(xiàn)棧或用棧實現(xiàn)隊列這種問題,因為棧和隊列本身就必須借助實現(xiàn)。 題目: 使用隊列實現(xiàn)棧的下列操作: push(x) -- 元素 x 入棧 pop() -- 移除棧頂元素 top() -- 獲取棧頂元素 empty() -- 返回棧是否為空 Impl...

    AlanKeene 評論0 收藏0
  • leetcode225 implement stack using queues

    摘要:題目要求使用隊列來模擬實現(xiàn)一個棧。棧是指先進后出的數(shù)據(jù)結(jié)構(gòu),而隊列則是先進先出的數(shù)據(jù)結(jié)構(gòu)。隊列的包括在隊列尾插入數(shù)據(jù),輸出隊列頭的數(shù)據(jù),查看隊列的長度,隊列是否為空。 題目要求 Implement the following operations of a queue using stacks. push(x) -- Push element x to the back of que...

    binta 評論0 收藏0
  • LeetCode 232:實現(xiàn)隊列 Implement Queue using Stacks

    摘要:題目使用棧實現(xiàn)隊列的下列操作將一個元素放入隊列的尾部。用棧實現(xiàn)隊列,可以用兩個棧完成題解。入隊列時用存入節(jié)點,出隊列時內(nèi)節(jié)點順序出棧壓入中。這類編程語言就壓根不需要用隊列實現(xiàn)棧或用棧實現(xiàn)隊列這種問題,因為棧和隊列本身就必須借助實現(xiàn)。 題目: 使用棧實現(xiàn)隊列的下列操作: push(x) -- 將一個元素放入隊列的尾部。 pop() -- 從隊列首部移除元素。 peek() -- 返回隊...

    cloud 評論0 收藏0
  • [Leetcode] Implement Queue using Stacks 實現(xiàn)隊列

    摘要:注意的方法是和,實際上我們應該實現(xiàn)的是和或者和,的實現(xiàn)和是一樣的,但將改為時,我們要先把到的元素保存,然后再彈出輸出棧,然后返回這個保存的元素。 Implement Queue using Stacks Implement the following operations of a queue using stacks. push(x) -- Push element x to th...

    Martin91 評論0 收藏0
  • leetcode232 Implement Queue using Stacks

    摘要:題目要求通過隊列實現(xiàn)一個棧的功能。棧的為壓入棧頂,出棧,棧頂元素,棧是否為空。重復上述的操作。但是當需要彈出元素時,則從桶彈出。這樣,下次加入的元素必然全部位于桶后的所有元素,而桶中的元素也能保證位輸入順序。極大的減少了不必要的入棧出棧。 題目要求 Implement the following operations of a queue using stacks. push(x) ...

    golden_hamster 評論0 收藏0

發(fā)表評論

0條評論

ivan_qhz

|高級講師

TA的文章

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