zoukankan      html  css  js  c++  java
  • 剑指Offer——包含min函数的栈

    题目描述:

    定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。


    分析:

     这题讲究效率,如果出栈一个一个的找,时间效率低下。

     所以我们用空间换时间,定义一个辅助栈,存储当前的最小值。

     入栈时,如果值是当前栈的最小值,则把值一并入辅助栈,不然只需要入主栈即可。

     出栈时,如果当前栈的最小值要出栈了,那么主栈和辅助栈一并出栈。

     辅助栈的栈顶元素一直都是当前栈的最小值。


    代码:

     1 struct Stack {  // 自定义栈
     2     stack<int> myStack; // 主栈
     3     stack<int> myMin;   // 辅助栈,存最小值的栈
     4 };
     5 class Solution {
     6 public:
     7     Stack s;
     8     void push(int value) {  // 入栈
     9         s.myStack.push(value);  // 值入主栈
    10         if(s.myMin.empty())
    11             s.myMin.push(value);
    12         if(value <= s.myMin.top())  // 最小值入辅助栈
    13             s.myMin.push(value);
    14     }
    15     void pop() {    // 如果主栈栈顶是最小值,主栈和辅助栈都出栈
    16         if(s.myStack.top() == s.myMin.top())
    17             s.myMin.pop();
    18         s.myStack.pop();
    19     }
    20     int top() {
    21         return s.myStack.top();
    22     }
    23     int min() {
    24         return s.myMin.top();
    25     }
    26 };
  • 相关阅读:
    harbor私有仓库搭建
    为普通用户添加sudo权限
    进程节点占用磁盘空间
    influxdb做prometheus永久存储
    prometheus监控linux进程
    Redis一主两从搭建
    ELK搭建
    redis geo操作
    k8s 1.16.3 yaml声明变化
    k8s启动Pod遇到CrashLoopBackOff的解决方法
  • 原文地址:https://www.cnblogs.com/jacen789/p/7747071.html
Copyright © 2011-2022 走看看