其他分享
首页 > 其他分享> > 每一题之栈数据结构

每一题之栈数据结构

作者:互联网

描述

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的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