博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode Min Stack
阅读量:5306 次
发布时间:2019-06-14

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

原题链接在这里: 

题目: 

Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

  • push(x) -- Push element x onto stack.
  • pop() -- Removes the element on top of the stack.
  • top() -- Get the top element.
  • getMin() -- Retrieve the minimum element in the stack.

Example:

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

题解:

可以用另一个stack, min_stk来维护最小值. push()时检测x是否小于等于min_stk 的peek(), 若true,则同时push进min_stk.

pop()时若该值等于min_stk.peek()则同时对min_stk进行pop()操作。

getMin()返回min_stk.peek()即可。

Note:使用peek(), pop()之前,都要检测stack.isEmpty(), 否则会throw exception.

Time Complexity: getMin(), O(1); push(), O(1); pop(), O(1); top(), O(1).

Space: O(n).

AC Java:

1 public class MinStack { 2  3     Stack
stk; 4 Stack
minStk; 5 public MinStack() { 6 stk = new Stack
(); 7 minStk = new Stack
(); 8 } 9 10 public void push(int x) {11 stk.push(x);12 if(minStk.isEmpty() || minStk.peek()>=x){13 minStk.push(x);14 }15 }16 17 public void pop() {18 if(!stk.isEmpty()){19 int x = stk.pop();20 if(!minStk.isEmpty() && x == minStk.peek()){21 minStk.pop();22 }23 }24 }25 26 public int top() {27 if(!stk.isEmpty()){28 return stk.peek();29 }30 throw new IllegalStateException("Stack is empty!");31 }32 33 public int getMin() {34 if(!minStk.isEmpty()){35 return minStk.peek();36 }37 throw new IllegalStateException("Stack is empty!");38 }39 }40 41 /**42 * Your MinStack object will be instantiated and called as such:43 * MinStack obj = new MinStack();44 * obj.push(x);45 * obj.pop();46 * int param_3 = obj.top();47 * int param_4 = obj.getMin();48 */

类似.

转载于:https://www.cnblogs.com/Dylan-Java-NYC/p/4825028.html

你可能感兴趣的文章
pg_controldata - 显示一个 PostgreSQL 集群的控制信息
查看>>
Find- Linux必学的60个命令
查看>>
小轮播图
查看>>
linux 常用命令
查看>>
sqlserver 服务启动不的解决办法
查看>>
WINDOWS内核版本
查看>>
测试工程师的一些面试题目(python)
查看>>
python-26 configparser 模块之二
查看>>
LiveWrite
查看>>
虚拟机安装CentOS6.4用“桥接:直接连接到物理网线”不能上网的原因及解决方法...
查看>>
mybatis官方中文文档
查看>>
ArcEngine控制台应用程序
查看>>
free 一个指针时【 retval = HeapFree(_crtheap, 0, pBlock);】报错的原因
查看>>
weblogic重启脚本
查看>>
asp.net下的串口编程
查看>>
idea 项目中 maven 编译出错Fatal error compiling: 无效的目标发行版: 1.8 -> [Help 1] 解决方法...
查看>>
mac下安装了brew
查看>>
web service
查看>>
Little Artem and Grasshopper
查看>>
HDU 2955
查看>>