文档章节

Stack

gtandsn
 gtandsn
发布于 2019/11/20 14:52
字数 104
阅读 14
收藏 0
class Stack{

    constructor() {
        this._items = [];
    }

    push(item) {
        this._items.push(item);
    }

    pop() {
        return this._items.pop();
    }

    peek() {
        return this._items[this._items.length - 1];
    }

    isEmpty() {
        return !this._items.length;
    }

    size() {
        return this._items.length;
    }

    clear() {
        this._items = [];
    }
}


class MinStack {
    constructor() {
        this._dataStack = new Stack();
        this._minStack = new Stack();
    }

    push(item) {
        this._dataStack.push(item);
        if(this._minStack.isEmpty() || this._minStack.peek() > item) {
            this._minStack.push(item);
        } else {
            this._minStack.push(this._minStack.peek());
        }
    }

    pop() {
        this._dataStack.pop();
        return this._minStack.pop();
    }

    min() {
        return this._minStack.peek();
    }
}

const minStack = new MinStack();
minStack.push(2);
minStack.push(5);
minStack.push(1);
console.log(minStack.min());
minStack.push(-2);
console.log(minStack.min());

 

© 著作权归作者所有

上一篇: Queue
下一篇: javascript设计模式
gtandsn
粉丝 0
博文 121
码字总数 54095
作品 0
成都
私信 提问
数据结构 栈 c++ 源代码实现

#include #include #define STACKINITSIZE 10 #define STACKINCREMENTSIZE 10 #define Status bool #define OK true #define ERROR false typedef int SElemType; typedef struct SqStack{ S......

忘记江南
2017/11/26
0
0
链栈的实现

include include include typedef int DataType; typedef struct node{struct node *next;//指针域DataType data;//数据域}Stack; void initStack(Stack **head);//初始化 int isEmpty(Stac......

南桥北木
2018/02/24
16
0
关于java 内存溢出

高并发下java 内存溢出 0x0000000dbe636000 JavaThread "Connection evictor" daemon [_thread_in_vm, id=288304, stack(0x0000001defc90000,0x0000001defd90000)] 0x0000001d14513000 Java......

chunf95
2018/09/18
131
0
描述如何只用一个数组来实现三个栈

两种思路:固定分割和弹性分割 方法一:固定分割[java] view plain copy //固定分割 int stackSize=100; int[] buffer=new int[3*stackSize]; int[] stackPointer={-1,-1,-1}; public void p......

一贱书生
2016/11/16
101
0
栈的理解 IAR/MDK修改stack/heap

栈的理解 一个程序大体上讲都是由变量和函数组合而成,变量有全局变量和局部变量,还有函数间传值的参数以及返回值。 Stack是为了程序运行过程中临时保存所需数据而在内存里分配的一小块空间...

huan447882949
2017/12/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何使用Selenium WebDriver截屏

有谁知道是否可以使用Selenium WebDriver截屏? (注:不是硒RC) #1楼 吉顿 import org.openqa.selenium.OutputType as OutputTypeimport org.apache.commons.io.FileUtils as FileUtils......

技术盛宴
28分钟前
4
0
高阶函数

定义:能够包装函数的,使原本函数增加一些额外的福利的函数 比如: function higherOrderFn(fn){} 能够对fn增加一些额外的福利 应用场景: (function () { var getLogin = functio...

gtandsn
33分钟前
9
0
架构师成长之后

小致Daddy
35分钟前
6
0
Git 介绍和日常命令

git 介绍 GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。 GitHub于2008年4月10日正式上线,除了Git代码仓库托管及基本的 Web管理...

郭靖Michael
今天
9
0
技巧以管理R会话中的可用内存

人们使用什么技巧来管理交互式R会话的可用内存? 我使用下面的函数(基于Petr Pikal和David Hinds在2004年r-help列表中的发布)列出(和/或排序)最大的对象,并偶尔对其中一些对象进行rm() ...

javail
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部