剑指offer面试题21:包含min函数的栈
题目描述:定义栈的数据结构,请在该类型中实现一个能够的得到栈的最小元素的min函数。
function StackWithMin() {
var m_data = [],
m_min = [];
this.peek = function(items) {
return items[items.length - 1];
}
this.isEmpty = function(items) {
return items.length === 0;
}
this.push = function(element) {
m_data.push(element);
if(m_min.length === 0 || element < this.peek(m_min)) {
m_min.push(element);
} else{
m_min.push(this.peek(m_min));
}
}
this.pop = function() {
if(!this.isEmpty(m_data) && !this.isEmpty(m_min)) {
m_data.pop();
m_min.pop();
} else {
return false;
}
}
this.min = function() {
if(!this.isEmpty(m_data) && !this.isEmpty(m_min)) {
return this.peek(m_min);
}
}
}
var stack = new StackWithMin();
stack.push(3);
stack.push(4);
stack.push(2);
stack.push(5);
stack.pop();
stack.pop();
console.log(stack.min());