博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【刷算法】LeetCode.155-最小栈
阅读量:7120 次
发布时间:2019-06-28

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

题目描述

设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。

push(x) -- 将元素 x 推入栈中。pop() -- 删除栈顶的元素。top() -- 获取栈顶元素。getMin() -- 检索栈中的最小元素。

示例:

MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.getMin();   --> 返回 -3.minStack.pop();minStack.top();      --> 返回 0.minStack.getMin();   --> 返回 -2.

代码实现

/** * initialize your data structure here. */var MinStack = function() {  this.s1 = [];  this.s2 = [];};/**  * @param {number} x * @return {void} */MinStack.prototype.push = function(x) {  let s2 = this.s2,      s2Len = s2.length,      s1 = this.s1;      let curMin = s2[s2Len-1];  if(curMin < x)    s2.push(curMin);  else    s2.push(x);  s1.push(x);};/** * @return {void} */MinStack.prototype.pop = function() {  let s1 = this.s1,      s1Len = s1.length,      s2 = this.s2,      s2Len = s2.length;    if(s1Len === 0)    return undefined;    s2.pop();  return s1.pop();};/** * @return {number} */MinStack.prototype.top = function() {   let s1 = this.s1,      s1Len = s1.length;  if(s1.length === 0)    return undefined;  return s1[s1Len-1];};/** * @return {number} */MinStack.prototype.getMin = function() {  let s2 = this.s2,      s2Len = s2.length;  if(s2Len === 0)    return undefined;    return s2[s2Len-1];};/**  * Your MinStack object will be instantiated and called as such: * var obj = Object.create(MinStack).createNew() * obj.push(x) * obj.pop() * var param_3 = obj.top() * var param_4 = obj.getMin() */

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

你可能感兴趣的文章
漫说中介者模式--创业公司成长记
查看>>
Linked List Cycle
查看>>
[物理学与PDEs]第3章第2节 磁流体力学方程组 2.4 不可压情形的磁流体力学方程组...
查看>>
举例理解Hibernate的三种状态
查看>>
利用yacc和lex制作一个小的计算器
查看>>
Linux命令学习总结:rmdir
查看>>
Socket网络编程--聊天程序(7)
查看>>
TextView中文文档
查看>>
【delphi】delphi出现‘尚未调用CoInitialize’异常
查看>>
设计模式 ( 十六 ): Mediator中介者模式 -- 行为型
查看>>
从源码角度一步一步来修改PreferenceActivity界面
查看>>
[Hibernate] - Annotations
查看>>
jQuery.event详细解析
查看>>
hadoop-处理小文件
查看>>
for(;;)和 while(1) 有什么区别吗?for()和while()的使用情景。
查看>>
远程打开服务管理器
查看>>
使用Jquery+EasyUI进行框架项目开发案例解说之中的一个---员工管理源代码分享
查看>>
提问的艺术(中文版)
查看>>
一只饥饿的老虎
查看>>
MagicalRecord使用中的注意事项
查看>>