面试题30. 包含min函数的栈
题目的意思就是说需要实现一个可以返回当前栈中对应的最小值的函数的,实现的思路是使用两个栈,一个是正常的栈,每次正常添加元素,然后每次都将当前栈中最小的元素放在其中,比如刚开始的时候,首先来的元素就是当前的第一个元素,就是当前的最小的,每次来的时候都跟当前最小栈的最顶端的元素进行比较,如果当前的元素小于更小则放入其中的最小栈内,否则继续将原先的栈顶的元素放在里面。实现的语言Javascript,实现的代码如下:
/**
* initialize your data structure here.
*/
var MinStack = function() {
this.stack = [];
this.minStack = [];
};
/**
* @param {number} x
* @return {void}
*/
MinStack.prototype.push = function(x) {
this.stack.push(x);
let len = this.minStack.length;
if(len != 0) {
let xx = this.minStack[len -1 ];
if(x <= xx) {
this.minStack.push(x);
} else{
this.minStack.push(xx);
}
} else{
this.minStack.push(x);
}
};
/**
* @return {void}
*/
MinStack.prototype.pop = function() {
this.stack.length --;
this.minStack.length --;
//js中可以直接通过修改对应的数组的长度来完成数组元素删除
};
/**
* @return {number}
*/
MinStack.prototype.top = function() {
let len = this.stack.length;
return this.stack[len - 1 ];
};
/**
* @return {number}
*/
MinStack.prototype.min = function() {
let len = this.minStack.length;
return this.minStack[len - 1];
};
/**
* Your MinStack object will be instantiated and called as such:
* var obj = new MinStack()
* obj.push(x)
* obj.pop()
* var param_3 = obj.top()
* var param_4 = obj.min()
*/