LeetCode之最小栈(一百五十五)
发布日期:2021-06-30 21:11:14 浏览次数:2 分类:技术文章

本文共 1224 字,大约阅读时间需要 4 分钟。

目录

 


题目

(原题链接:)

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

push(x) —— 将元素 x 推入栈中。

pop() —— 删除栈顶的元素。
top() —— 获取栈顶元素。
getMin() —— 检索栈中的最小元素。
 

示例:

输入:

["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.

提示:poptop 和 getMin 操作总是在 非空栈 上调用。

解题

分析:因为pop,top,getMin操作总是在非空栈上调用,因此不用判断目标栈是否为空。

代码:(C++)

class MinStack {public:    stack
data; stack
dataMin; /** initialize your data structure here. */ MinStack() { dataMin.push(INT_MAX); } void push(int x) { data.push(x); dataMin.push(min(dataMin.top(), x)); } void pop() { data.pop(); dataMin.pop(); } int top() { return data.top(); } int getMin() { return dataMin.top(); }};/** * Your MinStack object will be instantiated and called as such: * MinStack* obj = new MinStack(); * obj->push(x); * obj->pop(); * int param_3 = obj->top(); * int param_4 = obj->getMin(); */

执行结果:

转载地址:https://liuzhen.blog.csdn.net/article/details/107454064 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C++中常见的字符串类型转换
下一篇:Visual Studio项目开发中的常见问题及解决方法

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年05月04日 06时13分14秒