栈的最小值

Posted lanpang9661

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了栈的最小值相关的知识,希望对你有一定的参考价值。

2020-03-23
栈的最小值

请设计一个栈,除了常规栈支持的pop与push函数以外,还支持min函数,该函数返回栈元素中的最小值。执行push、pop和min操作的时间复杂度必须为O(1)

示例:

MinStack minStack = new MinStack();

minStack.push(-2);

minStack.push(0);

minStack.push(-3);

minStack.getMin(); --> 返回 -3.

minStack.pop();

minStack.top(); --> 返回 0.

题解:
思路1: 栈基础
栈数据格式的基本操作
/**
 * initialize your data structure here.
 */
var MinStack = function () {
  this.stack = [];
  this.index = 0;
};

/** 
 * @param {number} x
 * @return {void}
 */
MinStack.prototype.push = function (x) {
  this.stack[this.index++] = x; // 最后一项插入
};

/**
 * @return {void}
 */
MinStack.prototype.pop = function () {
  this.stack.length = this.index - 1; // 通过length减小删除最后一项
  this.index--;
};

/**
 * @return {number}
 */
MinStack.prototype.top = function () { // 返回最后一项
  return this.stack[this.index - 1];
};

/**
 * @return {number}
 */
MinStack.prototype.getMin = function () { // 获取最小值
  return Math.min(...this.stack);
};

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

 

以上是关于栈的最小值的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 155. Min Stack最小栈(中等)

LeetCode之面试题 : 栈的最小值

155. Min Stack 求栈的最小值

剑指offer20:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O)。

最小栈

最小栈