博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LC.155. Min Stack(非优化,两个stack 同步 + -)
阅读量:5977 次
发布时间:2019-06-20

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

https://leetcode.com/problems/min-stack/description/ 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. corner cases: 1)If the stack is empty, min() should return -1. 2)pop() - remove and return the top element, if the stack is empty, return -1 3)push(int element) - push the element to top top() - return the top element without remove it, if the stack is empty, return -1 4) min() - return the current min value in the stack.

这种写法 stack 1 stack 2 同步操作,stack 1 进来一个  stack2 也要进来一个。如果有特别多重复的数进来的情况,并且是一整块一样的数进来,那是可以被优化的。

1111111  222222  -1-1-1-1 111111 -2-2-2-2-2 33333 

如果 进来的数字是交叉的,则优化空间有限: 1212121212

 
1 public class LC_155_MinStack { 2  3     private Deque
stack ; 4 private Deque
minStack ; 5 6 /** initialize your data structure here. */ 7 public LC_155_MinStack() { 8 stack = new LinkedList<>() ; 9 minStack = new LinkedList<>();10 }11 /*12 stack -2 0 -313 min -2 -2 -314 * */15 public void push(int x) {16 stack.push(x);17 if (minStack.isEmpty()){18 minStack.push(x);19 } else{20 if (minStack.peek() < x){21 minStack.push(minStack.peek());22 } else{23 minStack.push(x);24 }25 }26 }27 28 public void pop() {29 if (stack.isEmpty()) return ;30 stack.pop();31 minStack.pop();32 }33 //peek34 public int top() {35 if (stack.isEmpty()) return -1 ;36 return stack.peek() ;37 }38 39 public int getMin() {40 if (minStack.isEmpty()) return -1 ;41 return minStack.peek();42 }43 }

 

 

转载于:https://www.cnblogs.com/davidnyc/p/8599073.html

你可能感兴趣的文章
PHP SESSION高级操作session_set_save_handler
查看>>
收集的UI和一些功能
查看>>
【工具使用系列】关于 MATLAB FIR滤波器,你需要知道的事
查看>>
JAVASCRIPT
查看>>
移动设备分辨率
查看>>
使用MKNetworkKit ios post请求
查看>>
Android时间选择控件
查看>>
List列表生成器和列表解析
查看>>
JDBC原理
查看>>
nginx rewrite规则语法
查看>>
lae界面开发工具入门之介绍五--<秘籍篇-杂项>
查看>>
jsp的四个作用域
查看>>
mysql 不能启动
查看>>
in-place editing 理解
查看>>
线性表插入,删除,查询操作
查看>>
Install Python3 on a Mac
查看>>
Android 四种launchMode及疑问
查看>>
【九度OJ1523】从上往下打印二叉树
查看>>
一款jQuery立体感动态下拉导航菜单特效
查看>>
IOS开发的基础知识
查看>>