155. Min Stack

来源:互联网 发布:国研网宏观经济数据库 编辑:程序博客网 时间:2024/05/17 23:42

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.
题意:实现一个最小栈,要求具有以上四个功能,且能常量时间返回检索最小值元素的功能。

思路:一个数组用来存值,一个数存最小值。注意:数组里存的是存入值与最小值的差,所以可能越界,要用long long类型保存差值。

class MinStack {public:void push(int x) {if (val.empty()){val.push_back(0);min = x;}else{val.push_back((long long)x - min);if (x < min)min = x;}}void pop() {if (!val.empty()){int index = val.size() - 1;if (val[index] < 0){min -= val[index];val.erase(val.begin()+index);}else{val.erase(val.begin() + index);}}}int top() {int index = val.size() - 1;if (val[index] < 0)return min;else{return min + val[index];}}int getMin() {if (!val.empty())return min;elsereturn -1;}private:vector<long long> val;int min;};



0 0