面试题21:包含min函数的栈
2017-02-23 18:55
260 查看
问题:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push及pop的时间复杂度都是O(1)。
思路:使用一个辅助栈,辅助栈的栈顶始终是数据栈中最小的元素。比如数据栈3进栈,现在3是最小值,我们也把这个最小值压入辅助栈。
数据栈4进栈,此时数据栈中依然3是最小值,则将3继续压入辅助栈。数据栈2进栈,此时2是最小值,将2压入辅助栈。
此事数据栈中的元素为3,4,2。辅助栈中的元素为3,3,2。
数据栈出栈,则辅助栈也出栈。此时数据栈中的元素为3,4。辅助栈中的元素为3,3。辅助栈的栈顶依然是数据栈中最小的元素。
数据栈出栈,辅助栈也出栈。此时数据栈中的元素为3,辅助栈中的元素为3,辅助栈的栈顶依然是数据栈中最小的元素。
思路:使用一个辅助栈,辅助栈的栈顶始终是数据栈中最小的元素。比如数据栈3进栈,现在3是最小值,我们也把这个最小值压入辅助栈。
数据栈4进栈,此时数据栈中依然3是最小值,则将3继续压入辅助栈。数据栈2进栈,此时2是最小值,将2压入辅助栈。
此事数据栈中的元素为3,4,2。辅助栈中的元素为3,3,2。
数据栈出栈,则辅助栈也出栈。此时数据栈中的元素为3,4。辅助栈中的元素为3,3。辅助栈的栈顶依然是数据栈中最小的元素。
数据栈出栈,辅助栈也出栈。此时数据栈中的元素为3,辅助栈中的元素为3,辅助栈的栈顶依然是数据栈中最小的元素。
相关文章推荐
- 【面试题21】包含min函数的栈
- 剑指offer代码解析——面试题21包含min函数的栈
- 剑指Offer---面试题21:包含min函数的栈
- Java - 剑指offer_面试题21_包含min函数的栈
- [剑指offer][面试题21]包含min函数的栈
- 面试题21:包含min函数的栈
- 面试题21:包含min函数的栈,面试题22:判断某一序列是否是出栈序列
- 剑指Offer面试题21(Java版):包含min函数的栈
- 面试题21:栈:包含min函数的栈
- 面试题21:包含min函数的栈
- 剑指offer之面试题21:包含min函数的栈
- 面试题21 包含min函数的栈
- 【剑指offer】面试题21:包含min函数的栈
- 面试题21:包含min函数的栈
- 剑指Offer面试题20顺时针打印矩阵,面试题21包含min函数的栈
- 面试题21 包含min函数的栈
- 剑指offer-面试题21-包含min函数的栈
- 面试题21:包含min函数的栈
- 【剑指offer】4.3举例让抽象问题具体化——面试题21:包含min函数的栈
- 【剑指Offer】面试题21:包含min函数的栈