算法和数据结构的面试题目
1. 设计一个有getMin()功能的栈:实现一个特殊的栈,在实现栈的基础功能上,再返回栈中最小元素的基本操作
2. 由两个栈实现一个队列
3. 如何仅用递归函数逆序一个栈 要求:只能用递归函数来实现,不能使用其他数据结构
4. 实现猫狗队列:有如下几个类:Pet、Cat、Dog,实现一种猫狗队列的结构,要求如下:
- add()方法可以将cat或dog实例放入队列之中
- poll()方法可以按先后次序弹出最早进入的宠物
- pollDog()方法可以按先后次序弹出最早进入的狗
- pollCat()方法可以按先后次序弹出最早进入的猫
- isEmpty()判断队列是否为空
- isDogEmpty()判断队列狗是否为空
- isCatEmpty()判断队列猫是否为空
5. 用一个栈实现另一个栈的排序,要求:只能额外申请一个栈,允许使用变量,但是不能申请其它数据结构
6. 生成窗口最大值数组:如果数组长为n,窗口为w,则窗口数组为n-w+1,它记录着每个窗口的最大值。
7. 题目:构造数组的MaxTree:要求:给定一个数组,此数组没有重复值,用此数组的所有值构造一棵二叉树,使得这个树的的每一棵子树的树头都是最大值
8. 求最大子矩阵的大小:要求:给定一个整数矩阵map,其中值只有0,1两种,求其中全是1的所有矩阵区域中,最大矩阵区域为1的数量