LeetCode_栈_简单_155. 最小栈

x33g5p2x  于2022-05-16 转载在 其他  
字(1.3k)|赞(0)|评价(0)|浏览(339)

1.题目

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。

实现 MinStack 类:

  1. MinStack() 初始化堆栈对象。
  2. void push(int val) 将元素val推入堆栈。
  3. void pop() 删除堆栈顶部的元素。
  4. int top() 获取堆栈顶部的元素。
  5. int getMin() 获取堆栈中的最小元素。

示例 1:

  1. 输入:
  2. ["MinStack","push","push","push","getMin","pop","top","getMin"]
  3. [[],[-2],[0],[-3],[],[],[],[]]
  4. 输出:
  5. [null,null,null,null,-3,null,0,-2]
  6. 解释:
  7. MinStack minStack = new MinStack();
  8. minStack.push(-2);
  9. minStack.push(0);
  10. minStack.push(-3);
  11. minStack.getMin(); --> 返回 -3.
  12. minStack.pop();
  13. minStack.top(); --> 返回 0.
  14. minStack.getMin(); --> 返回 -2.

提示:
-231 <= val <= 231 - 1
pop、top 和 getMin 操作总是在 非空栈 上调用
push, pop, top, and getMin最多被调用 3 * 104 次

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/min-stack

2.思路

(1)辅助栈

3.代码实现(Java)

  1. //思路1————辅助栈
  2. class MinStack {
  3. //辅助栈
  4. Stack<Integer> minStack;
  5. Stack<Integer> stack;
  6. public MinStack() {
  7. minStack = new Stack<>();
  8. stack = new Stack<>();
  9. minStack.push(Integer.MAX_VALUE);
  10. }
  11. public void push(int val) {
  12. stack.push(val);
  13. minStack.push(Math.min(minStack.peek(), val));
  14. }
  15. public void pop() {
  16. stack.pop();
  17. minStack.pop();
  18. }
  19. public int top() {
  20. return stack.peek();
  21. }
  22. public int getMin() {
  23. return minStack.peek();
  24. }
  25. }
  26. /**
  27. * Your MinStack object will be instantiated and called as such:
  28. * MinStack obj = new MinStack();
  29. * obj.push(val);
  30. * obj.pop();
  31. * int param_3 = obj.top();
  32. * int param_4 = obj.getMin();
  33. */

相关文章