用两个栈实现队列
本篇带来【剑指 offer】的两道初级算法题:冲~~
用两个栈实现队列
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )
复制代码
解题思路:
这道题主要是明白栈是后进先出,队列是先进先出,那我们不妨设立一个入队栈和一个出队栈
入队直接压入入队栈,出队先检查出队栈是否为空,为空的话需要先把入队栈倒入出队栈,在进行出队操作,否则直接出队即可;
JavaScript 实现 如下:
复制代码
包含 min 函数的栈
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。
复制代码
解题思路:
审题:
push(x) —— 将元素 x 推入栈中。
pop() —— 删除栈顶的元素。
top() —— 获取栈顶元素。
getMin() —— 检索栈中的最小元素。
像常规 apipush 和 pop 这些操作,对栈进行了操作,直接输出 null;
top 和 min 需要我们自己按照题目要求来排序栈,并输出元素
JavaScript 实现 如下:
复制代码
OK,以上便是本篇分享~
我是掘金安东尼,输出暴露输入,技术洞见生活,再会~~
版权声明: 本文为 InfoQ 作者【掘金安东尼】的原创文章。
原文链接:【http://xie.infoq.cn/article/793670a68a82a74c6dd051bf2】。文章转载请联系作者。
评论