资讯专栏INFORMATION COLUMN

【刷算法】LeetCode.155-最小栈

wing324 / 1182人阅读

摘要:题目描述设计一个支持,,操作,并能在常数时间内检索到最小元素的栈。删除栈顶的元素。检索栈中的最小元素。示例返回返回返回代码实现

题目描述

设计一个支持 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()
 */

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/97084.html

相关文章

  • LeetCode 155最小 Min Stack

    摘要:删除栈顶的元素。可以另外新建一个栈来顺序存入数据最小值。另外在数据入栈时需要判断该值是否比辅助栈的栈顶元素的值更小,如果更小,也应该将它加入辅助栈。并且需要判断辅助栈是否为空,在不空的条件下才可以取栈顶元素比较,否则会溢出。 LeetCode 155:最小栈 Min Stack 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) -- ...

    LeexMuller 评论0 收藏0
  • 力扣(LeetCode)155

    摘要:题目地址题目描述设计一个支持,,操作,并能在常数时间内检索到最小元素的栈。将元素推入栈中。删除栈顶的元素。示例返回返回返回解答每次入栈都放入两个元素,分别是当前元素,和当前的最小元素因此放入之前需要和当前值进行比较。 题目地址:https://leetcode-cn.com/probl...题目描述:设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 p...

    Scliang 评论0 收藏0
  • 算法】包含min函数的

    摘要:题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的函数。 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。 分析 该题目要求实现一个带有返回当前栈中最小元素功能的数据结构,首先会想到使用一个变量保存当前最小元素的下标,但是仔细一想,如果当前最小元素刚好在栈顶,此时执行pop操作,那么最小元素会被弹出,新的最小元素又上哪儿找呢?比较暴力的方...

    justCoding 评论0 收藏0
  • (Java)数据结构之队列(Queue),含有三个OJ题(用队列实现,用实现队列,实现一个最小

    摘要:当对头与队尾重合时如何区分循环队列的空与满呢我们可以通过添加来记录队列元素的个数,当为时队列为空,当不为时,队列为满。 目录 1. 队列的概念 2. 队列的使用      3. 队列的模拟实现 4. 循环队列 5. 双端队列  6. OJ题  1. 队列的概念 队列只允许在一端进行插入操作...

    lyning 评论0 收藏0
  • 从简历被拒到收割今日头条 offer,我用一年时间破茧成蝶!

    摘要:正如我标题所说,简历被拒。看了我简历之后说头条竞争激烈,我背景不够,点到为止。。三准备面试其实从三月份投递简历开始准备面试到四月份收,也不过个月的时间,但这都是建立在我过去一年的积累啊。 本文是 无精疯 同学投稿的面试经历 关注微信公众号:进击的java程序员K,即可获取最新BAT面试资料一份 在此感谢 无精疯 同学的分享 目录: 印象中的头条 面试背景 准备面试 ...

    tracymac7 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<