剑指Offer之包含min函数的栈
Posted jacob-wuhan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指Offer之包含min函数的栈相关的知识,希望对你有一定的参考价值。
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。
思路:想要找到栈中所含最小元素的min函数,可以用一个栈来存储最小元素,但是又要防止这个最小元素弹出,所以需要存储次小元素到栈中。
1 import java.util.Stack; 2 3 public class Solution { 4 Stack<Integer> stack=new Stack<>(); 5 Stack<Integer> smin=new Stack<>(); 6 7 public void push(int node) { 8 stack.push(node); 9 if(smin.isEmpty()) 10 smin.push(node); 11 if(node<=smin.peek()) 12 smin.push(node); 13 } 14 15 public void pop() { 16 if(smin.peek()==stack.peek()) 17 smin.pop(); 18 stack.pop(); 19 } 20 21 public int top() { 22 return stack.peek(); 23 } 24 25 public int min() { 26 return smin.peek(); 27 } 28 }
以上是关于剑指Offer之包含min函数的栈的主要内容,如果未能解决你的问题,请参考以下文章