leetcode155. 最小栈

举报
兔老大 发表于 2021/04/26 00:04:02 2021/04/26
【摘要】 设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) -- 将元素 x 推入栈中。 pop() -- 删除栈顶的元素。 top() -- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。 示例: MinStack minStack = new MinStack(); minStack....

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

push(x) -- 将元素 x 推入栈中。
pop() -- 删除栈顶的元素。
top() -- 获取栈顶元素。
getMin() -- 检索栈中的最小元素。
示例:

MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin();   --> 返回 -3.
minStack.pop();
minStack.top();      --> 返回 0.
minStack.getMin();   --> 返回 -2.

思路:辅助栈。跟着主栈压和弹,但是压入的是当前最小值。取最小值时就取辅助栈的栈顶即可。


  
  1. import java.util.Stack;
  2. public class MinStack {
  3. // 数据栈
  4. private Stack<Integer> data;
  5. // 辅助栈
  6. private Stack<Integer> helper;
  7. /**
  8. * initialize your data structure here.
  9. */
  10. public MinStack() {
  11. data = new Stack<>();
  12. helper = new Stack<>();
  13. }
  14. public void push(int x) {
  15. data.add(x);
  16. if (helper.isEmpty() || helper.peek() >= x) {
  17. helper.add(x);
  18. } else {
  19. helper.add(helper.peek());
  20. }
  21. }
  22. public void pop() {
  23. helper.pop();
  24. data.pop();
  25. }
  26. public int top() {return data.peek();}
  27. public int getMin() {return helper.peek();}
  28. }

 

文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。

原文链接:fantianzuo.blog.csdn.net/article/details/103564237

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。