设计包含 min 函数的栈(栈)
定义栈的数据结构,要求添加一个 min 函数,能够得到栈的最小元素。
要求函数 min、push 以及 pop 的时间复杂度都是 O(1)。

 #include <algorithm>
#include <iostream>
#include <exception>
#include <string> class illegalParameterValue
{
public:
illegalParameterValue():errorMessage("Illegal parameter value"){}
illegalParameterValue(const char* theMessage){ errorMessage = theMessage;}
std::string errorMessage;
}; template<typename T>
struct minStackElement{
T element;
T min;
}; template<typename T>
class minStack{
private:
int top;
int size;
minStackElement<T>* arrayStack;
public:
minStack(int initCapacity)
{
try{
if(initCapacity < )
throw illegalParameterValue("initCapacity must greater than 0");
}catch(illegalParameterValue& e){
std::cout << "initCapacity has been made to be 1" << std::endl;
initCapacity = ;
}
arrayStack = new minStackElement<T>[initCapacity];
size = initCapacity;
top = -;
}
~minStack()
{
delete [] arrayStack;
}
void push(T x)
{
minStackElement<T> e;
e.element = x;
if(top == -){
e.min = x;
}else if(x < arrayStack[top].min){
e.min = x;
}else{
e.min = arrayStack[top].min;
}
if(top == size-)
{
minStackElement<T>* temp = arrayStack;
arrayStack = new minStackElement<T>[*size];
std::copy(temp,temp+size-,arrayStack);
delete [] temp;
}
arrayStack[++top] = e;
} void pop()
{
if(top == -)
throw illegalParameterValue("the stack is empty");
top--;
} T min()
{
return arrayStack[top].min;
}
};

minStack实现的更多相关文章

  1. LintCode MinStack

    Implement a stack with min() function, which will return the smallest number in the stack. It should ...

  2. MinStack

    Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. pu ...

  3. leetcode算法学习----155. 最小栈(MinStack )

    下面题目是LeetCode算法155题: https://leetcode.com/problems/min-stack/ 题目1:最小函数min()栈 设计一个支持 push,pop,top 操作, ...

  4. [LeetCode] 155. minStack 设计最小栈

    注意:getMin()时间复杂度为O(1) 最原始的方法: class MinStack(object): def __init__(self): """ initial ...

  5. [LeetCode] Min Stack 最小栈

    Design a stack that supports push, pop, top, and retrieving the minimum element in constant time. pu ...

  6. BUG-FREE-For Dream

    一直直到bug-free.不能错任何一点. 思路不清晰:刷两天. 做错了,刷一天. 直到bug-free.高亮,标红. 185,OA(YAMAXUN)--- (1) findFirstDuplicat ...

  7. 二刷Cracking the Coding Interview(CC150第五版)

    第18章---高度难题 1,-------另类加法.实现加法. 另类加法 参与人数:327时间限制:3秒空间限制:32768K 算法知识视频讲解 题目描述 请编写一个函数,将两个数字相加.不得使用+或 ...

  8. (lintcode全部题目解答之)九章算法之算法班题目全解(附容易犯的错误)

    --------------------------------------------------------------- 本文使用方法:所有题目,只需要把标题输入lintcode就能找到.主要是 ...

  9. [ACM训练] 算法初级 之 数据结构 之 栈stack+队列queue (基础+进阶+POJ 1338+2442+1442)

    再次面对像栈和队列这样的相当基础的数据结构的学习,应该从多个方面,多维度去学习. 首先,这两个数据结构都是比较常用的,在标准库中都有对应的结构能够直接使用,所以第一个阶段应该是先学习直接来使用,下一个 ...

随机推荐

  1. How to generate HMAC-SHA1 in C#?

    using (HMACSHA1 m = new HMACSHA1(Encoding.UTF8.GetBytes("AKIDZfbOA78asKUYBcXFrJD0a1ICvR98JM&quo ...

  2. [Elixir002]节点启动后自动连接其它节点

    问题: 如何指定一个节点在启动后自动连接到别的节点上? 这个我们要使用到sys.config,这是erlang的配置文件,这个文件一般都是$ROOT/releases/Vsn下 1. 首先我们要先启动 ...

  3. win10 照片查看器

    Windows Registry Editor Version 5.00 ; Change Extension's File Type [HKEY_CURRENT_USER\Software\Clas ...

  4. 会HTML/CSS就可以轻松创建网站

    网站其本质就是HTML + CSS 外加一些JavaScript构成的.所以基本上只要你会一些前端,就可以开始花样搭网站了. 如果只用HTML/CSS那做出来的网站只能叫静态网站,性能好但维护不方便, ...

  5. WPF 新手引导

    参考了https://www.cnblogs.com/ZXdeveloper/p/8391864.html,自己随便实现了一个,记录下,比较丑 <Window x:Class="Use ...

  6. pageadmin CMS Sql Server2008 R2数据库安装教程

    sql sever数据库建议安装sql2008或以上版本,如果电脑上没有安装数据库,参考下面步骤安装. sql2008 r2下载地址:点击下载   提取码: wfb4 下载后点击安装文件,安装步骤如下 ...

  7. Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)

    问题: Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS) 解决: cmake -DPYTHON_INC ...

  8. C# winform中listview排序

    本文解决方案是采用下面链接中的解决方案.十分感谢这篇文章的作者bright:http://blog.163.com/shensc@126/blog/static/1312896522010614103 ...

  9. leecode刷题(19)-- 最长公共前缀

    leecode刷题(19)-- 最长公共前缀 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: [&quo ...

  10. 菜鸟浅谈“诈骗”希望“治未病"

    关于目前诈骗.社工数据的套路,说道说道~ 一.前言 这篇文章没有什么高深的技术,只有普普通通的套路,主要也是有I春秋各位表哥与诈骗分子的交手有感而发! 二.正文 因为我们上网的或者其他条件下的人群,没 ...