155.最小栈

2020-06-23  本文已影响0人  su945

题目描述

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

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

问题分析

主要利用两个栈,分别存储正常数据和最小数据

解题思路1

class MinStack {
public:
    /** initialize your data structure here. */
    //构建两个数据结构,一个是存储,一个是最小
    stack<int> data;
    stack<int> minData;

    MinStack() {
        
        
    }

    void push(int x) {
        data.push(x);
        if (minData.empty())
        {
            minData.push(x);
        }
        else
        {
            if (minData.top() > x)
            {
                minData.push(x);
            }
        }
    }

    void pop() {
        minData.pop();
        data.pop();
    }

    int top() {
        return data.top();
    }
    int getMin() {
        return minData.top();
    }
};
上一篇下一篇

猜你喜欢

热点阅读