定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数,在该栈中,调用 min、pop、push 的时间复杂度都是 O(1)O(1)。

思路:定义一个辅助栈,用以保存当前栈的最小值,需保持辅助栈和当前栈的高度一致,以实现二者push、pop的同步;

  • (1)栈的数据结构定义

    template<typename T>
    class StackWithMin
    {
    public:void push(const T& value);void pop();const T& min();
    private:stack<T> data;stack<T> tmp;
    };
  • (2)成员函数实现
template<typename T>
void StackWithMin<T>::push(const T& value)
{data.push(value);if (tmp.empty() || value < tmp.top())tmp.push(value);elsetmp.push(tmp.top());
}
template<typename T>
void StackWithMin<T>::pop()
{assert(!data.empty());data.pop();tmp.pop();
}
template<typename T>
const T& StackWithMin<T>::min() const
{assert(!tmp.empty());return tmp.top();
}

【剑指 offer】(二十一)—— 包含 min 函数的栈相关推荐

  1. 剑指offer系列-30.包含min函数的栈

    剑指offer系列第30题.包含min函数的栈 题目描述: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中, 调用 min.push 及 pop 的时间复杂度都是 ...

  2. 【剑指Offer】20包含min函数的栈

    题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 时间限制:1秒:空间限制:32768K:本题知识点:栈 解题思路 # -*- codi ...

  3. 【剑指offer】登峰造极--包含min函数的栈

    时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M 热度指数:439567 本题知识点: 栈 算法知识视频讲解 题目描述 定义栈的数据结构,请在该类型中实现一个能够 ...

  4. 《LeetCode力扣练习》剑指 Offer 30. 包含min函数的栈 Java

    <LeetCode力扣练习>剑指 Offer 30. 包含min函数的栈 Java 一.资源 题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调 ...

  5. 【LeetCode】剑指 Offer 30. 包含min函数的栈

    [LeetCode]剑指 Offer 30. 包含min函数的栈 文章目录 [LeetCode]剑指 Offer 30. 包含min函数的栈 一.辅助栈 一.辅助栈 解题思路: 普通栈的 push() ...

  6. 剑指offer——面试题21:包含min函数的栈

    剑指offer--面试题21:包含min函数的栈 Solution1: 辅助栈! 逻辑上要想清楚..但是用栈结构来实现栈,目的不知为何... class Solution { public:void ...

  7. LeetCode剑指offer算法备战春招-包含min函数的栈

    剑指 Offer 30. 包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例 ...

  8. 剑指 Offer 30. 包含min函数的栈 (python实现)

    剑指 Offer 30. 包含min函数的栈 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min.push 及 pop 的时间复杂度都是 O(1). 示例 ...

  9. Python描述 LeetCode 剑指 Offer 30. 包含min函数的栈

    Python描述 LeetCode 剑指 Offer 30. 包含min函数的栈   大家好,我是亓官劼(qí guān jié ),在[亓官劼]公众号.CSDN.GitHub.B站等平台分享一些技术 ...

  10. 剑指offer:包含min函数的栈 python实现

    题目 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 解题思路 暴力做法: 遍历一遍,找最小的数,然后返回. # -*- coding ...

最新文章

  1. Guava之FluentIterable使用示例
  2. Java RandomAccessFile writeLong()方法与示例
  3. Netbackup设备管理之Linux篇,Netbackup设备管理之Linux篇
  4. Docker 学习4 Docker容器虚拟化网络概述
  5. 机器学习之熵【从定义到代码】
  6. jquery基础复习-index(),
  7. Stereoscopic Player 1.7.4 (SSP) 加载字幕
  8. windows上vscode 安装Fortran-language-server
  9. 嵌入式软件工程师就只需会写C代码吗
  10. 树的递归思维:自顶向下、自底向上
  11. Invalid regular expression flags 错误
  12. linux实用技巧:ubuntu18.04安装samba服务器实现局域网文件共享
  13. HTML5酷站欣赏及学习网站收集
  14. 程序员必备的十个工具
  15. 通过命令符查看笔记本电脑的电池损耗
  16. RabbitMQ配置文件_修改RabbitMQ MQTT的1883端口
  17. Python OS模块操作文件目录
  18. 基于TPS(Thin Plate Spines)的STN网络的PyTorch实现
  19. evplayer android闪退,Evplayer优弊端汇总
  20. SAP QM检验批常见问题及解决办法

热门文章

  1. hue的oozie的定时调度任务配置
  2. chm 转 html 带索引,chm 的项目文件中包含创建 chm 文件所需的HTML文件信息、目录表文件信息、索引文件信息、窗口属 - 试题答案网问答...
  3. mysql 页 存储,MySQL InnoDB Engine--数据页存储和UPDATE操作
  4. oracle数据库文件默认的安装位置,Oracle 10g数据库默认安装应该注意的问题
  5. 剑指offer面试题12. 矩阵中的路径(矩阵搜索)(深度优先搜索)(剪枝)
  6. TensorFlow精进之路(三):两层卷积神经网络模型将MNIST未识别对的图片筛选出来
  7. OpenCV精进之路(二十二):实例——皮肤检测技术
  8. C++设计模式之Template Method(模板方法模式)
  9. Linux环境SOCKET编程5:定时器接口timerfd
  10. SCI从入门到精髓(四)——SCI论文写作技巧