155.最小栈

var MinStack = function () {
    this.dataStack = [] // 存放数据
    this.minStack = [] // 存放最小值,每次新元素进栈时与之前的元素比较
};

/** 
 * @param {number} val
 * @return {void}
 */
MinStack.prototype.push = function (val) {
    this.dataStack.push(val)

    if (this.minStack.length === 0) {
        this.minStack.push(val)
    } else {
        let min = Math.min(this.minStack[this.minStack.length - 1], val)
        this.minStack.push(min)
    }
};

/**
 * @return {void}
 */
MinStack.prototype.pop = function () {
    this.dataStack.pop()
    this.minStack.pop()
};

/**
 * @return {number}
 */
MinStack.prototype.top = function () {
    return this.dataStack[this.dataStack.length - 1]
};

/**
 * @return {number}
 */
MinStack.prototype.getMin = function () {
    return this.minStack[this.minStack.length - 1]
};

/**
 * Your MinStack object will be instantiated and called as such:
 * var obj = new MinStack()
 * obj.push(val)
 * obj.pop()
 * var param_3 = obj.top()
 * var param_4 = obj.getMin()
 */