LeetCode 155 Min Stack
Posted 逗逗飞
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 155 Min Stack相关的知识,希望对你有一定的参考价值。
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
- push(x) -- Push element x onto stack.
- pop() -- Removes the element on top of the stack.
- top() -- Get the top element.
- getMin() -- Retrieve the minimum element in the stack.
题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的getMin函数。要求调用getMin,push, pop的时间复杂度均为O(1)
解题思路
一般求解线性结构中的求中最小元素,遍历一遍即可求出。
但如果这样做不满足本题要求:时间复杂度O(1)。
且栈结构,只能访问栈顶,否则破坏了栈结构。
因此必须在每次压栈的时候,都要确定此时栈中的最小元素。可以开个辅助数组保存。
代码:
class MinStack
public:
stack<int>s1,s2;// 一个存数据,一个辅助栈
void push(int value)
s1.push(value);
if(s2.empty())
s2.push(value);
else
s2.push(s2.top()<value?s2.top():value);
void pop()
if(!s1.empty())
s1.pop();
s2.pop();
int top()
return s1.top();
int getMin()
return s2.top();
;
如果有更好的想法,欢迎交流!
以上是关于LeetCode 155 Min Stack的主要内容,如果未能解决你的问题,请参考以下文章