ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

每一题之栈数据结构

2021-10-15 21:04:01  阅读:154  来源: 互联网

标签:node 之栈 mkl pop 栈中 push 元素 数据结构 每一题


描述

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有