栈和队列之设计一个有getMin(得到最小值)功能的栈

举报
chenyu 发表于 2021/07/27 00:32:31 2021/07/27
【摘要】 有2中方案,分别用类和内部类实现了     import java.util.Stack; /** * @author chenyu 第一种设计: * 题目:设计一个有getMin功能的栈,设计一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作 * 要求:1 pop push getMin操作的时间复杂度都是O(1) * 2...

有2中方案,分别用类和内部类实现了

 

 


  
  1. import java.util.Stack;
  2. /**
  3. * @author chenyu 第一种设计:
  4. * 题目:设计一个有getMin功能的栈,设计一个特殊的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作
  5. * 要求:1 pop push getMin操作的时间复杂度都是O(1)
  6. * 2 设计的栈类型可以使用线程的栈结构
  7. * 思路:压入数据规则:假设当前数据时value,先将其压入stackData,然后判断stackMin是否为空,
  8. * 如果为空,则value压入stackMin
  9. * 如果不能空,则比较value和stackMin中栈顶元素的哪一个更小
  10. * 如果value更小或者两者相等,则将value也压入stackMin
  11. * 如果value中栈顶元素小,则stackMin不压入任何内容,如下例子
  12. * 1-------->1
  13. * 2------->无
  14. * 1-------->1
  15. * 5-------->无
  16. * 4-------->无
  17. * 3-------->3
  18. * 弹出数据规则:由压入数据规则可知,栈顶元素是最小的,先弹出stackData栈顶元素value,当value等于stackMin栈顶元素的时候,stackMin弹出数据
  19. * 当

文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。

原文链接:chenyu.blog.csdn.net/article/details/49983293

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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