原题截图
解题思路两个栈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);}复制代码
虽然写出了解题方法,但是本菜也有疑问。 如果在出栈的同时有入栈操作或多线程并发的情况 下这类问题是不是就没办法解决了呢,愿大牛看到给予指导。