题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
思路:
这个题是想得到一个时间复杂度为O(1)的min函数,所以应用一个辅助栈,压的时候,如果A栈的压入比B栈压入大,B栈不压,,,,小于等于,AB栈同时压入,出栈,如果,AB栈顶元素不等,A出,B不出。
AC代码:
1 class Solution { 2 public: 3 4 stack<int> stack1,stack2; 5 6 void push(int value) { 7 stack1.push(value); 8 if(stack2.empty()) 9 stack2.push(value); 10 else if(value<=stack2.top()) 11 { 12 stack2.push(value); 13 } 14 } 15 16 void pop() { 17 if(stack1.top()==stack2.top()) 18 stack2.pop(); 19 stack1.pop(); 20 21 } 22 23 int top() { 24 return stack1.top(); 25 } 26 27 int min() { 28 return stack2.top(); 29 } 30 31 };