时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。
思路:
第一眼看到这个题目,真是一脸懵逼,无从下手
题目的目的很明确要实现输出栈中的最小元素的函数,使用栈的数据结构,所以需要定义stack类型的变量,需要实现push函数,pop函数,top函数等
设立两个StackDate和StackMin,一个就是普通的栈,另外一个存储push进来的最小值。(stackMin的作用相当于是用于检索stackData中最小元素位置,)发
void push(int value) { stack.push(value); if(stack_min.empty()) stack_min.push(value); else if(value < stack_min.top()) stack_min.push(value); } void pop() { if(stack.top() == stack_min.top()) stack_min.pop(); stack.pop(); } int top() { return stack.top(); } int min() { return stack_min.top();