本文是【常用算法思路分析系列】的第三篇,分析栈和队列相关的高频题目。本文分析:1、可查询最值的栈;2、用两个栈实现队列的功能;3、反转栈中元素;4、排序栈中元素;5、滑动窗口问题。
本系列前两篇导航:
【常用算法思路分析系列】排序高频题集
【常用算法思路分析系列】字符串高频题集
1、可查询最值的栈
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。...
分类:
编程语言 时间:
2016-05-21 11:47:49
阅读次数:
252
剑指offer第七题:利用两个栈实现队列 扩展:利用两个队列实现栈 ...
分类:
其他好文 时间:
2016-05-18 21:44:19
阅读次数:
163
1.用两个栈实现队列
分析:队列的特点是“先进先出”,而栈的特点是“后进先出”,入队列时让所有的元素进到stack1中,出队列时先判断stack2是否为空,不为空直接pop即可,若为空,将stack1中所有的元素“倒入”stack2中,这样就用两个栈实现了队列。
实现代码:
class Solution
{
public:
void push(int node) {
...
分类:
其他好文 时间:
2016-05-12 16:28:22
阅读次数:
149
方法一:入队时,将元素压入s1。出队时,将s1的元素逐个“倒入”(弹出并压入)s2,将s2的顶元素弹出作为出队元素,之后再将s2剩下的元素逐个“倒回”s1。方法二:入队时,先判断s1是否为空,如不为空,说明所有元素都在s1,此时将入队元素直接压入s1;如为空,要将s2的元素逐..
分类:
其他好文 时间:
2016-04-22 01:32:27
阅读次数:
195
题目一:用两个栈实现队列,队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列的尾部插入节点和在队列的头部删除节点的功能。 template <class T> class CQueue { CQueue(); ~CQueue(); void appendTa ...
分类:
其他好文 时间:
2016-04-18 20:19:10
阅读次数:
228
问题 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路 将入队的元素,加入stack1,如果有出队操作,则将stack1中的元素依次压入stack2,从stack2中弹出元素就等于出队操作,直到从stack2中弹出所有元素,则才又从stack1中加入元素。 ...
分类:
其他好文 时间:
2016-04-17 16:05:29
阅读次数:
166
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 Tips: 用两个栈实现一个队列的功能? 要求给出算法和思路! <分析>: 入队:将元素进栈A 出队:判断栈B是否为空,如果为空,则将栈A中所有元素pop,并push进栈B,栈B出栈; 如果不为空,栈B直 ...
分类:
其他好文 时间:
2016-04-05 12:28:59
阅读次数:
129
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 1 class Solution 2 { 3 public: 4 void push(int node) { 5 stack1.push(node); 6 } 7 8 int pop() { 9 if(s
分类:
其他好文 时间:
2016-03-02 21:30:41
阅读次数:
120
public class QueueByStack { private Stack<Integer> stack1; private Stack<Integer> stack2; public QueueByStack() { // TODO Auto-generated constructor s
分类:
其他好文 时间:
2016-02-29 20:01:37
阅读次数:
126
惯例。看题:题目:用两个栈实现一个队列。队列的声明如下。请实现它的两个函数appendTail和deleteHead,分别完成对也尾部插入节点和队列头部删除节点的功能。队列结构:template<typenameT>classCQueue
{
public:
CQueue(void);
~CQueue(void);
voidappendTail(constT&..
分类:
其他好文 时间:
2016-02-14 22:27:48
阅读次数:
192