首页 > 试题广场 >

牛牛的最大栈

[编程题]牛牛的最大栈
  • 热度指数:108 时间限制:C/C++ 5秒,其他语言10秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

在动物牛国度的农场上,农场主想要快速获取牛的体重数据,于是他需要你设计一个支持 push、pop、top 操作,并能在常数时间内检索到最大元素的栈。

请你实现一个类 MaxStack,并完成以下操作:

  • MaxStack():初始化最大栈对象。
  • void push(int val):将元素 val 推入栈中。
  • void pop():删除栈顶部的元素。
  • int top():获取栈顶部的元素。
  • int getMax():获取栈中的最大元素。
示例1

输入

["push","push","push","getMax","pop","top","getMax"],[0,-2,0,-3,0,0,0,0]

输出

[0,-2,0]
示例2

输入

["push", "push", "push", "push", "getMax", "pop", "getMax", "pop", "getMax"],[1, 2, 3, 4, 0, 0, 0, 0, 0]

输出

[4,3,2]

备注:
  • 0 <= val <= 23^1 - 1
  • pop、top 和 getMax 操作总是在非空栈上调用
  • push、pop、top 和 getMax 最多被调用 3 * 10^5 次

这道题你会答吗?花几分钟告诉大家答案吧!