栈OJ题 —— 最小栈
目录题目链接题目要求解题思路代码实现题目链接155. 最小栈 - 力扣LeetCode题目要求为了能够满足由于用一个栈来检索最小值的时间复杂度 —— O(N),不满足题目要求 —— 在常数时间 O1内完成任务,因此我们需要2个栈来完成该要求。解题思路stack:用来存放所有元素;minstack: 记录最小值当minsatck为空的时候直接入栈stack在每次入栈的时候和minstack中最小值进行比较比最小值小就入栈minstack和minstack最小值相等的时候,也要入栈minstack!!在出栈stack时如果stack的栈顶和minstack的栈顶的值一样同时出栈stack栈顶 和minstack栈顶代码实现publicclassTest{classMinStack{// 创建 2个栈StackIntegerstack;StackIntegerminStack;publicMinStack(){stacknewStack();minStacknewStack();}publicvoidpush(intvalue){stack.push(value);if(minStack.isEmpty()){minStack.push(value);}else{//minstack 不为空//入栈元素和最小值进行比较比最小值更小入栈minstackif(valueminStack.peek()){minStack.push(value);}}}publicvoidpop(){intpopValstack.pop();//如果minstack不为空 且 minstack 的最小值和stack出栈元素相等 出栈minstack 更新最小值if(!minStack.isEmpty()popValminStack.peek()){minStack.pop();}}publicinttop(){returnstack.peek();}publicintgetMin(){//获取minstack的栈顶元素returnminStack.peek();}}}