LeedCode—MinStack

来源:互联网 发布:dll文件恢复软件 编辑:程序博客网 时间:2024/05/16 05:31

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.

#include <iostream>#include <deque>using namespace std; //因为需要在constant time当中获得最小值,将最小值单独存储class MinStack {public:void push(int x) {stack.push_front(x);if (minStack.empty() || minStack.front() >= x){minStack.push_front(x);}}void pop() {if(stack.empty()){return;}if(stack.front() == minStack.front()){minStack.pop_front();}stack.pop_front();}int top() {if(stack.empty()){return 0;}return stack.front();}int getMin() {if(minStack.empty()){return 0;}return minStack.front();}private:deque<int> stack;deque<int> minStack;};int main(){MinStack stack;stack.push(512);stack.push(1024);stack.push(1024);stack.push(512);stack.pop();stack.getMin();stack.pop();stack.getMin();stack.pop();stack.getMin();}
这里是利用了deque作为底层容器实现stack,还可以使用list和vector
使用deque的时候只用一端就可以了
0 0
原创粉丝点击