题目概览设计一个支持pushpoptop操作并能在常数时间内检索到最小元素的栈。实现MinStack类:MinStack()初始化堆栈对象。void push(int value)将元素value推入堆栈。void pop()删除堆栈顶部的元素。int top()获取堆栈顶部的元素。int getMin()获取堆栈中的最小元素。示例 1:输入[MinStack,push,push,push,getMin,pop,top,getMin] [[],[-2],[0],[-3],[],[],[],[]]输出[null,null,null,null,-3,null,0,-2]解释MinStack minStack new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); -- 返回 -3. minStack.pop(); minStack.top(); -- 返回 0. minStack.getMin(); -- 返回 -2.提示-231 val 231 - 1pop、top和getMin操作总是在非空栈上调用push,pop,top, andgetMin最多被调用3 * 104次来源155. 最小栈 - 力扣LeetCode解题分析方法栈最小值通过栈来存储每次push时比较栈顶和当前元素将小的元素入栈pop 时一起出栈。时间复杂度O(1)空间复杂度O(n)class MinStack { DequeInteger stack; DequeInteger minStack; public MinStack() { stack new LinkedList(); minStack new LinkedList(); } public void push(int value) { stack.push(value); int min value; if (!minStack.isEmpty()) { min Math.min(value, minStack.peek()); } minStack.push(min); } public void pop() { stack.poll(); minStack.poll(); } public int top() { return stack.peek(); } public int getMin() { return minStack.peek(); } } /** * Your MinStack object will be instantiated and called as such: * MinStack obj new MinStack(); * obj.push(value); * obj.pop(); * int param_3 obj.top(); * int param_4 obj.getMin(); */