博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【刷算法】包含min函数的栈
阅读量:6940 次
发布时间:2019-06-27

本文共 833 字,大约阅读时间需要 2 分钟。

题目描述

定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。

分析

该题目要求实现一个带有返回当前栈中最小元素功能的数据结构,首先会想到使用一个变量保存当前最小元素的下标,但是仔细一想,如果当前最小元素刚好在栈顶,此时执行pop操作,那么最小元素会被弹出,新的最小元素又上哪儿找呢?比较暴力的方法是出现这种情况时,再遍历一遍栈就能重新得到最小元素的下标,但是这么暴力操作就没意思了而且时间复杂度很好。

可以使用双栈来实现min功能,栈1常规保存元素,栈2保存此时此刻的栈中最小 元素,比如说有元素进栈1,如果该元素小于栈2的栈顶元素,说明新的最小元素就是该进栈元素,否则,最小元素还是栈2的栈顶元素。

代码实现

var stack1 = [];var stack2 = [];function push(node){    if(stack2.length === 0 && stack1.length === 0){        stack1.push(node);        stack2.push(node);    } else{        stack1.push(node);        var stack2Top = stack2[stack2.length-1];        if(node < stack2Top)            stack2.push(node)        else            stack2.push(stack2Top);    }    }function pop(){    stack2.pop();    return stack1.pop();}function top(){    return stack1[stack1.length-1];}function min(){    return stack2[stack2.length-1];}复制代码

转载地址:http://iginl.baihongyu.com/

你可能感兴趣的文章
解决Enter键与input 、a标签触发的事件的冲突
查看>>
CSS排序工具csscomb
查看>>
登录验证web服务引用时 "超时"报错处理...
查看>>
Java之杨辉三角的实现
查看>>
POJ 1276, Cash Machine
查看>>
你想不到的压缩方法:将javascript文件压缩成PNG图像存储
查看>>
获取当前域名
查看>>
Spark小课堂Week4 从控制台看Spark逻辑结构
查看>>
linux上启动tomcat远程不能访问
查看>>
网络传输中的三张表,MAC地址表、ARP缓存表以及路由表
查看>>
Windows+Apache2.4.10+PHP7.0+MySQL5.6.21安装
查看>>
AT NEW F、AT END OF F注意事项
查看>>
FOR ALL ENTRIES IN 与 INNER JOIN 写在一个SQL上影响效率
查看>>
2010年04月01日
查看>>
IDEA下maven工程的classpath
查看>>
sql的where条件转换成mongdb筛选条件
查看>>
支持新版chrome,用webstorm编译形成css和sourcemap,调试sass和less源文件(转)
查看>>
【转载】aspx,ascx和ashx使用小结
查看>>
蓝牙智能灯带(天猫精灵生态)方案
查看>>
Java缓存类的实际应用场景
查看>>