![在这里插入图片描述](https://img-blog.csdnimg.cn/b03141e7b20c48b4a46f561df436a3cd.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6LaF57qn5aSn5ZOI5YWL,size_17,color_FFFFFF,t_70,g_se,x_16#pic_center)
- 题目要求创建一个min函数,这个函数能得到栈的最小值
- 那么,我的思路是创建两个栈(数组), 有两个栈,一个数据栈A,一个最小栈B
- 当有数据时,存进栈A。同时查看此时栈B是否为空栈,或者存进栈A的这条数据,是否比栈B的最后一个数据小,如果是,则同时把这条数据存进栈B
- 删除操作时: 删除栈A的最后一个数据(栈A的栈顶),如果栈A的最后一个数据 等于 栈B的最后一个数据。则同时把栈B的栈顶也删除。
var MinStack = function() {
this.stack = [];
this.min_stack = [];
};
MinStack.prototype.push = function(x) {
this.stack.push(x);
if(!this.min_stack.length || x <= this.min_stack[this.min_stack.length-1]) {
this.min_stack.push(x)
}
};
MinStack.prototype.pop = function() {
if(this.stack[this.stack.length-1] == this.min_stack[this.min_stack.length-1]) {
this.min_stack.pop();
}
return this.stack.pop();
};
MinStack.prototype.top = function() {
return this.stack[this.stack.length -1]
};
MinStack.prototype.min = function() {
return this.min_stack[this.min_stack.length-1]
};