原題截圖
解題思路兩個棧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);
}
複製程式碼
雖然寫出瞭解題方法,但是本菜也有疑問。 如果在出棧的同時有入棧操作或多執行緒併發的情況 下這類問題是不是就沒辦法解決了呢,願大牛看到給予指導。