20 包含min函数的栈
题目:包含min函数的堆栈
要求:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
1 import java.util.Stack; 2 public class Solution { 3 //借助于辅助栈,一个用来存放元素,一个用来存放最小值 4 Stack element = new Stack(); 5 Stack minstack = new Stack(); 6 public void push(int node) { 7 element.push(node); 8 //如果最小栈为空或者是新输入的值比最小栈的值还要小,则将新数据入站 9 //强制性转换容易忽略,如果去掉int会如下错误 10 //./Solution.java:19: error: bad operand types for binary operator '>=' 11 //ifinstack.empty() || minstack.peek() >= node) 12 //^ 13 //first type: Object 14 //second type: int 15 //Note: ./Solution.java uses unchecked or unsafe operations. 16 //Note: Recompile with -Xlint:unchecked for details. 17 //1 error 18 if( minstack.empty() || (int)minstack.peek() >= node) 19 minstack.push(node); 20 } 21 22 public void pop() { 23 //元素栈正常出栈,但是出栈之前要检查,该元素是否与最小值相等,若相等,则最小值栈也要pop一个元素 24 if(element.empty()) return; 25 if(element.peek() == minstack.peek()){ 26 element.pop(); 27 minstack.pop(); 28 }else{ 29 element.pop(); 30 } 31 } 32 33 public int top() { 34 return (int)element.peek(); //强制性转换容易忽略 35 } 36 37 public int min() { 38 return (int)minstack.peek(); //强制性转换容易忽略 39 } 40 }
本地编译器代码
            
 
作者:shareidea            
 
出处:https://www.cnblogs.com/shareidea94/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。   
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号