Leetcode刷题102-155. 最小栈(C++详细解法!!!)

Come from : [https://leetcode-cn.com/problems/min-stack/]

155. Min Stack

  • 1.Question
  • 2.Answer
  • 3.我的收获

1.Question

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.

Example :

MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin();   --> Returns -3.
minStack.pop();
minStack.top();      --> Returns 0.
minStack.getMin();   --> Returns -2.

2.Answer

easy 类型题目。.不多BB
用两个栈实现最小栈功能。
一个栈 data 存放数据,另一个栈min存放前栈中最小的数据。
我的AC代码 从头到尾都 保持了 栈data 和 min 的 size大小一样下进行的。(当然也可以用其他做法,不必保持 data 和min 的size大小一直相等)
AC代码如下:

class MinStack {
public:
    /** initialize your data structure here. */
    MinStack() {
        
    }
    
    void push(int x) {
        data.push(x);         //将数据压入栈中
        if(min.empty())
        {
            min.push(x);
        }
        else
        {
            if(x > min.top())
            {
                x = min.top();
            }
            min.push(x);
        }
    }
    
    void pop() {
        data.pop();
        min.pop();
    }
    
    int top() {
        return data.top();
    }
    
    int getMin() {
        return min.top();
    }
private:
    stack<int> data;   //原始数据栈
    stack<int> min;    //最小值栈(辅助栈)
};

/**
 * 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();
 */

3.我的收获

栈,队列。。。
fighting。。。

2019/6/17 胡云层 于南京 102

你可能感兴趣的:(LeetCode从零开始,LeetCode,C++)