返回主页 牛犁heart

时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 

题目描述

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。
 
思路:
   第一眼看到这个题目,真是一脸懵逼,无从下手
   题目的目的很明确要实现输出栈中的最小元素的函数,使用栈的数据结构,所以需要定义stack类型的变量,需要实现push函数,pop函数,top函数等
  
  设立两个StackDate和StackMin,一个就是普通的栈,另外一个存储push进来的最小值。(stackMin的作用相当于是用于检索stackData中最小元素位置,)发
    void push(int value) {
        stack.push(value);
        if(stack_min.empty())
            stack_min.push(value);
        else if(value < stack_min.top())
            stack_min.push(value);
    }
    void pop() {
        if(stack.top() == stack_min.top())
            stack_min.pop();
        stack.pop();
    }
    int top() {
        return stack.top();
    }
    int min() {
        return stack_min.top();

猜你喜欢

转载自www.cnblogs.com/lllloo/p/12542987.html