左神指南第一章_栈和队列
来源:互联网 发布:身份证复制软件3.7 编辑:程序博客网 时间:2024/06/06 20:32
题目一:设计一个有getMin功能的栈
【题目】
实现一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作。
【要求】
1、pop、push、getMin操作的时间复杂度都是O(1)。
2、设计的栈类型可以使用现成的栈结构。
【思路】
使用两个栈stackData和stackMin,一个用来保存当前栈中的元素,另一个用来保存每一步的最小值。
【设计方式一】
如果压入元素比stackMin小,则将元素压入stackMin中,否则不压入。
优点:节省空间。
缺点:弹栈需要额外进行检查,浪费时间。
【代码实现】
【设计方式二】
如果压入元素比stackMin小,则将元素压入stackMin中,否则压入stackMin当前栈顶元素。
优点:节省时间。
缺点:浪费空间。
【代码实现】
题目二:由两个栈组成的队列
【题目】
编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)。
【思路】
相互倾倒。
【代码实现】
题目三:如何仅用递归函数和栈操作逆序一个栈
【题目】
一个栈依次压入1、2、3、4、5,那么从栈顶到栈底分别为5、4、3、2、1。将这个栈转置后,从栈顶到栈底为1、2、3、4、5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他的数据结构。
【思路】
设计两个函数,一个是得到栈底元素并移除。另一个是逆序栈的函数。
【代码实现】
题目四:猫狗队列
【题目】
已知宠物、狗和猫的类。实现一个猫狗队列的结构。
【要求】
1、用户可以调用add方法将cat类或者dog类的实例放入队列中。
2、用户可以调用pollAll方法,将队列中所有的实例按照队列的先后顺序依次弹出。
3、用户可以调用pollDog方法,将队列中dog类的实例按照队列的先后顺序依次弹出。
4、用户可以调用pollCat方法,将队列中的cat类的实例按照队列的先后顺序依次弹出。
5、用户可以调用isEmpty方法,检查队列中是否有dog或cat类的实例。
6、用户可以调用isDogEmpty方法,检查队列中是否还有dog类的实例。
7、用户可以调用isCatEmpty方法,检查队列中是否还有cat类的实例。
【思路】
题目五:用一个栈实现另一个栈的排序
【题目】
- 左神指南第一章_栈和队列
- 《程序员代码面试指南》第一章 栈和队列
- 第一章_左旋转字符串
- 算法与数据机构学习_第一章.栈和队列_2.实现2个栈组成的队列
- 第一章 1.3背包、队列和栈
- 栈和队列_迷宫问题_队列
- 程序员编程艺术_第一章左旋转字符串_C实现
- 栈和队列_迷宫问题_栈和回朔法
- 算法与数据机构学习_第一章.栈和队列_1.设计一个有返回栈中最小元素功能的栈
- 数据结构_栈、队列和树(Java)
- 数据结构基础_栈和队列
- 数据结构03_栈、队列和数组
- JACK_C#_集合之栈和队列
- 18_栈和队列---两个栈表示一个队列
- 19_栈和队列---两个队列表示一个栈
- 3.4 表、栈和队列_队列ADT
- SDJZU_新生_栈和队列_愚人节的礼物
- SDJZU_新生_栈和队列_士兵队列训练问题
- ZC702开发板-上电测试
- ASC1 E-Nice Patterns Strike Back
- python学习——random模块
- perl中system函数和反引号` `使用区别
- [MVVM]01-MVVMLight安装
- 左神指南第一章_栈和队列
- 决策树模型
- same-tree/symmetric-tree
- 部署Jenkins
- K3 CLOUD 插件的学习
- USACO 1.4 Combination Lock
- POJ
- 插入排序java
- keccak算法及实现