两个栈实现一个队列
今天下午汉得来学校宣讲,笔试中看到这样一个题目,让我们用两个栈实现一个队列。
那时候没想太多,队列先进先出,栈先进后出,那么只要一个栈作为主栈,另一个栈作为缓存栈,来回倒腾就能实现队列的功能了。
回来后仔细想想,其实还有比这更高效的方法。也就是保留主栈的栈底元素,弹出即可,这样可以减少一次压栈操作。
顺便用代码实现了一下。
1 | /* |
今天下午汉得来学校宣讲,笔试中看到这样一个题目,让我们用两个栈实现一个队列。
那时候没想太多,队列先进先出,栈先进后出,那么只要一个栈作为主栈,另一个栈作为缓存栈,来回倒腾就能实现队列的功能了。
回来后仔细想想,其实还有比这更高效的方法。也就是保留主栈的栈底元素,弹出即可,这样可以减少一次压栈操作。
顺便用代码实现了一下。
1 | /* |