zoukankan      html  css  js  c++  java
  • 包含min函数的栈

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

    题目描述

    定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
    注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。
     
    思路:
       第一眼看到这个题目,真是一脸懵逼,无从下手
       题目的目的很明确要实现输出栈中的最小元素的函数,使用栈的数据结构,所以需要定义stack类型的变量,需要实现push函数,pop函数,top函数等
      
      设立两个StackDate和StackMin,一个就是普通的栈,另外一个存储push进来的最小值。(stackMin的作用相当于是用于检索stackData中最小元素位置,)
      push压栈:
      每次压入的数据newNum都push进StackDate中,然后判断StackMin是否为空,如果为空那也把newNum同步压入StackMin里;如果不为空,就先比newNum和StackMin中栈顶元素的大小,如果newNum较大,那就不压入StackMin里,否则就同步压入StackMin里。

      Pop出栈:

        和push操作相对应,判断stackData栈顶元素是否与stackMin栈顶元素相同(stackMin中元素 <= stackData元素),如果相等,两个栈都弹出栈顶元素,不过不相等就stackData弹出

      代码如下:

    class Solution {
    public:
        stack<int> stack,stack_min;
        
        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();
        }
    };

    附上堆栈stack的基本操作:

  • 相关阅读:
    Linux 文件和目录的属性
    关于样式加载顺序,js加载顺序
    关于css切换菜单
    jquery插件编写思路
    京东中关于领券地址的安全处理
    把js写到链接a标签的href中和写到onclick中的区别
    京东中关于jsonp的运用
    关于Jquery中ajax方法data参数用法的总结
    js中的延迟加载
    Jquery版Ajax利用JSONP 跨域POST/GET传输数据研究
  • 原文地址:https://www.cnblogs.com/whiteBear/p/12535360.html
Copyright © 2011-2022 走看看