思路: 使用两个栈实现一个队列,栈A用作插入栈,栈B用作弹出栈。 队列的特点为先进先出。 代码如下: ...
分类:
其他好文 时间:
2017-08-08 16:48:23
阅读次数:
161
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路:有点类似于解汉诺塔,把stack2当做中转杆,使用栈stack1入队,队列的队首在栈stack1的栈底,这样出队的话肯定不符合队列先进先出的规则,这时用到stack2了,注意,只有stack2是空的,才可以把 ...
分类:
其他好文 时间:
2017-07-28 22:30:36
阅读次数:
148
一、常见题型如下: 1. 实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1) 2. 使用两个栈实现一个队列 3. 使用两个队列实现一个栈 4. 元素出栈、入栈顺序的合法性。如入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1) 5. ...
分类:
其他好文 时间:
2017-07-25 11:52:27
阅读次数:
209
一个算术表达式的后缀表达式形式如下: op1 op2 operator 使用两个栈,一个用来存储操作数,另外一个用来存储操作符,设计并实现一个 JavaScript 函 数,该函数可以将中缀表达式转换为后缀表达式,然后利用栈对该表达式求值。 ...
分类:
其他好文 时间:
2017-07-06 20:33:11
阅读次数:
183
用两个栈实现队列 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 实现代码 思路 入队:将元素进栈1; 出队:判断栈2是否为空,如果为空,则将栈1中所有元素pop,并push进栈2,栈2出栈; 如果不为空,栈2直接出栈。 相关知识 栈(stack)又名 ...
分类:
编程语言 时间:
2017-06-29 12:40:41
阅读次数:
156
用两个栈实现一个队列的功能。 解题思路 假设两个栈A和B,且都为空。 栈A提供push()功能,栈B提供pop()功能。 入队列:入栈A。 出队列: 假设栈B不为空。直接弹出B的元素。 假设栈B为空,则依次弹出栈A的元素并压入栈B中,再弹出B中的元素。 实现代码 #include <iostream ...
分类:
其他好文 时间:
2017-06-13 10:02:45
阅读次数:
130
总结一下本书中遇到的大部分面试题。面试题3:二维数组中的查找 题目:在一个二维数组中,每一行都按照从左到右的递增顺序排列,每一列都按照从上到下递增的顺序排列,请完成一个函数,输入这样的一个整数,判断数组中是否含有该整数。 面试题4:替换空格 题目:请实现一个函数,把字符串中的每个空格替换成%20。 ...
分类:
编程语言 时间:
2017-05-31 12:05:22
阅读次数:
138
双栈排序 洛谷链接 用双栈进行排序,也就是给出一个序列,让你用两个栈来排序,输出排序的操作类型。 实现也比较简单,如果存在一个k,使得i<j<k且a[k]<a[i]<a[j],那么i和j就不能存在一个栈中。 代码: 1 #include<cstdio> 2 #include<cstdlib> 3 # ...
分类:
编程语言 时间:
2017-05-08 16:54:41
阅读次数:
184
class Solution { public: bool Find(int target, vector<vector<int> > array) { int m = array.size();//行数 int n = array[0].size();//列数 int x =m-1,y=0; wh ...
分类:
编程语言 时间:
2017-05-04 20:11:10
阅读次数:
197