劍指offer-用兩個棧實現佇列-php

Ginger_CJ發表於2018-05-10

原題截圖

劍指offer-用兩個棧實現佇列-php
解題思路

兩個棧stack1、stack2 棧stack1用來作入佇列。 棧stack2用來出佇列,當棧stack2為空時,棧stack1全部出棧到棧stack2,棧stack2再出棧(即出佇列)。

$stack1 = $stack2 = [];
function mypush($node)
{
    global $stack1;
    array_push($stack1, $node);
}

function mypop()
{
    global $stack1;
    global $stack2;
    if (empty($stack2)) {
        while (!empty($stack1))
            array_push($stack2, array_pop($stack1));
    }
    return empty($stack2) ? NULL : array_pop($stack2);
}
複製程式碼

雖然寫出瞭解題方法,但是本菜也有疑問。 如果在出棧的同時有入棧操作或多執行緒併發的情況 下這類問題是不是就沒辦法解決了呢,願大牛看到給予指導。

相關文章