每一题之栈数据结构
作者:互联网
描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数,并且调用 min函数、push函数 及 pop函数 的时间复杂度都是 O(1)
push(value):将value压入栈中
pop():弹出栈顶元素
top():获取栈顶元素
min():获取栈中最小元素
示例:
输入: ["PSH-1","PSH2","MIN","TOP","POP","PSH1","TOP","MIN"]
输出: -1,2,1,-1
解析:
"PSH-1"表示将-1压入栈中,栈中元素为-1
"PSH2"表示将2压入栈中,栈中元素为2,-1
“MIN”表示获取此时栈中最小元素==>返回-1
"TOP"表示获取栈顶元素==>返回2
"POP"表示弹出栈顶元素,弹出2,栈中元素为-1
"PSH-1"表示将1压入栈中,栈中元素为1,-1
"TOP"表示获取栈顶元素==>返回1
“MIN”表示获取此时栈中最小元素==>返回-1
示例1
输入:
["PSH-1","PSH2","MIN","TOP","POP","PSH1","TOP","MIN"]
复制返回值:
-1,2,1,-1
解题:
let kop=[]
let mkl=[]
function push(node)
{
// write code here
//这里是加入栈中数据
kop.push(node)
//这个说是如果mkl数组为空时加入进去
if(mkl.length==0){
mkl.push(node)
}else{
//这里是取出最后一个值然后与node做对比
if(node<=mkl[mkl.length-1]){
mkl.push(node)
}
}
}
/*
主要的思路是利用另一个数组,然后,把数据放到两个数组栈中,一个是随意放,另外一个是做判断再放,想mkl
首先判断mkl是否为空,为空就直接加进去,不为空就取出最后一个值作比较,如果node小于最后一个值,那么就
就放node进去,如果不小于就不放
*/
function pop()
{
// write code here
let x=kop.pop()
if(x===mkl[mkl.length-1]){
mkl.pop()
}
return x
}
function top()
{
// write code here
return kop[kop.length - 1]
}
function min()
{
// write code here
return mkl[mkl.length-1]
}
module.exports = {
push : push,
pop : pop,
top : top,
min : min
};
标签:node,之栈,mkl,pop,栈中,push,元素,数据结构,每一题 来源: https://blog.csdn.net/m0_50290125/article/details/120790687