漫漫长路C++

#c++实现一个可以返回最小值的stack

2018-01-31  本文已影响0人  想吃面

来自于算法珠玑题库

https://soulmachine.gitbooks.io/algorithm-essentials/content/java/stack-and-queue/stack/min-stack.html

#include <iostream>
#include <stack>
using namespace std;

class minstack
{
public:
    void push(int x);
    void pop();
    int top();
    int getmin();

private:
    stack<int> s,minStack;
};

void minstack::pop() {
s.pop();
    minStack.pop();
}
int minstack::top() {
    return s.top();
}
int minstack::getmin() {
    return minStack.top();
}
void minstack::push(int x) {
s.push(x);
    int minvalue=minStack.empty() ? x: min(minStack.top(),x);
    minStack.push(minvalue);
}
int main()
{
    minstack s1;
    s1.push(56);
    s1.push(12);
    s1.push(47);
    cout<<s1.getmin();
    return 0;
}

思想是利用一个辅助栈来实现返回最小值的功能。

上一篇下一篇

猜你喜欢

热点阅读