标题:栈和队列面试题
面试题一:实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值)的时间复杂度为O(1)
- 解题思路:我们可以利用一个辅助栈(MinStack),用来存储最小值,在最开始的情况下两个栈同时入,当继续入栈时判断该元素是否小于或等于上一个入栈元素,若小于或等于则同时入两个栈,否则只入Stack,当出栈时用MinStack的栈顶元素和Stack栈顶元素比较,若相等则两个栈同时出栈,最后Stack的最小值就为MinStack的栈顶元素
MinStackNum.h 头文件
1 |
|
MinStackNum.c 主函数文件
1 |
|
MinStackNum.c 测试文件
1 |
|