题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数。
C++实现:
思路:应用一个辅助栈,压的时候,如果A栈的压入比B栈压入大,B栈不压,,,,小于等于,AB栈同时压入,出栈,如果,AB栈顶元素不等,A出,B不出。
class Solution {
stack<int> A, B;
public:
void push(int value) {
A.push(value);
if(B.empty())
B.push(value);
else if(value < B.top())
{
B.push(value);
}
}
void pop() {
if(A.top() == B.top())
B.pop();
A.pop();
}
int top() {
return A.top();
}
int min() {
return B.top();
}
};
Python实现:
思路:直接用列表可以代替实现栈的功能
# -*- coding:utf-8 -*-
class Solution:
def __init__(self):
self.a = []
def push(self, node):
# write code here
self.a.append(node)
def pop(self):
# write code here
self.a.pop(-1);
def top(self):
# write code here
return self.a[-1]
def min(self):
# write code here
return min(self.a)