类MinStack{privateStackdataStack;//用于存储数据的栈privateStackminStack;//用于存储最小值的栈/**初始化MinStack*/publicMinStack(){dataStack=newStack<>();//初始化存储数据的栈minStack=newStack<>();//初始化存储最小值的栈}/**将元素x压入栈顶*/publicvoidpush(intx){dataStack.push(x);//数据栈直接将x压入栈顶if(minStack.isEmpty()||x<=minStack.peek()){//如果最小值栈为空或者x<=最小值栈顶,将x压入最小值栈minStack.push(x);}}/**删除栈顶元素*/publicvoidpop(){if(!dataStack.isEmpty()){//如果数据栈不为空inttop=dataStack.pop();//删除数据栈顶,获取栈顶元素的值if(top==minStack.peek()){//如果删除的元素是栈顶元素的最小值minStack.pop();//也删除最小栈顶元素}}}/**返回栈顶元素*/publicinttop(){if(!dataStack.isEmpty()){//如果数据栈不为空返回dataStack。窥视();//直接返回数据栈顶元素}return-1;//其他情况返回-1,也可以抛出异常}/**返回栈的最小元素*/publicintmin(){if(!minStack.isEmpty()){//如果最小栈不为空则返回minStack.peek();//返回最小栈顶元素}return-1;//其他情况返回-1,也可以抛出异常}}