定義棧的數據結構,請在該類型中實現一個能夠得到棧中所含最小元素的min函數
(時間複雜度應爲O(1))
首先分析一下棧,可以實現嗎?
棧是先進後出,但是如果有一個輔助棧記錄整個棧中最小元素,則可以實現。
var stack = [];
var minStack = [];//輔助棧
length = 0;
//push
//插入元素
//在堆棧頂部插入一個新元素,該元素位於當前頂部元素之上。
//pop
//刪除上面的元素。出棧
/* 維護兩個棧stack,stackmin,分別記錄輸入的所有值 和 最小值
每輸入一個值,正常入stack棧,但是如果比棧stackmin的棧頂元素小的話,則入stackmin棧,否則stackmin中的棧頂元素重複入棧一次,
這樣做是爲了保證每次取最小值都能取到stack中所含元素的最小值 */
function push(node)//插入元素
{
// write code here
if(length === 0){
minStack.push(node);
}else if(node > minStack[minStack.length-1]){
stack.push(node);
}else{
minStack.push(node);
stack.push(node);
}
length++;
}
function pop()//刪除元素
{
// write code here
if(length === 0){
return null;
}else if(stack[stack.length-1] === minStack[minStack.length-1]){
minStack.pop();
return stack.pop();
}else{
return stack.pop();
}
length--;
}
function top()
{
// write code here
return stack[0];
}
function min()
{
// write code here
return minStack[minStack.length-1];
}