算法——栈和队列(3.7%,1.2%)
2012-12-18 15:13 msfte 阅读(216) 评论(0) 编辑 收藏 举报1,设计包含min函数的栈(栈)
2, 栈的push、pop序列(栈)
题目:输入两个整数序列。其中一个序列表示栈的
push顺序,
判断另一个序列有没有可能是对应的
pop顺序。
为了简单起见,我们假设
push序列的任意两个整数都是不相等的。
比如输入的
push序列是1、2、3、4、5,那么4、5、3、2、1就有可能是一个pop系列。
因为可以有如下的
push和pop序列:
push 1
,push 2,push 3,push 4,pop,push 5,pop,pop,pop,pop,
这样得到的
pop序列就是4、5、3、2、1。
但序列
4、3、5、1、2就不可能是push序列1、2、3、4、5的pop序列。
3, 实现一个队列。
队列的应用场景为:
一个生产者线程将
int类型的数入列,一个消费者线程将int类型的数出列
4, 设计一个栈结构,满足一下条件:
min,push,pop操作的时间复杂度为O(1)。
5, 用俩个栈实现队列(栈、队列)。
6, 颠倒栈(栈)。
题目:用递归颠倒一个栈。例如输入栈{1, 2, 3, 4, 5},1在栈顶。
颠倒之后的栈为{5, 4, 3, 2, 1},5处在栈顶。
7,时间复杂度为O(1),怎么找出一个栈里的最大元素
8,12345入栈,出栈结果 21543 31245 43215 12534 可能的为?
9,1,2,3,4…..n,n个数进栈,有多少种出栈顺序,写出递推公式
10,双向链表模拟队列操作push pop find
11,.N个数,出栈有几种情况
12,定义一个栈的数据结构,实现min函数,要求push,pop,min时间复杂度是0(1);