// Stack.cpp : 定义控制台应用程序的入口点。
 //

 #include "stdafx.h"
 #include <iostream>
 using namespace std;

 template <class Type>
 struct Stack
 {
 private:
 Type *_stack;
 int _top;
 int _min;
 int _size;

 public:
 Stack(),_min()
 {
 _stack = new Type[size];//(Type*)malloc(sizeof())
 }
 void push(const Type &value)
 {

 )
 {
 _min = value;
 }
 else if(_top == _size)
 {
 cout<<"Push failed,the stack is full"<<endl;
 return;
 }
 _stack[_top++] = value-_min;
 if(value < _min)
 {
 _min = value;
 }

 }
 Type pop()
 {
 )
 {
 cout<<"Pop failed,the stack is emply."<<endl;
 ;
 }
 Type popvalue;
 )
 {
 popvalue = _min;
 _min = _min-_stack[_top];
 }
 else
 {
 popvalue = _min + _stack[_top];
 }
 return popvalue;
 }
 Type min()
 {
 return _min;
 }

 };

 int _tmain(int argc, _TCHAR* argv[])
 {
 Stack<);
 sk.push();
 sk.push();
 sk.push();
 sk.push();
 sk.push();
 sk.push();
 sk.push();

 cout<<sk.min()<<endl;
 cout<<sk.pop()<<endl;
 cout<<sk.min()<<endl;
 cout<<sk.pop()<<endl;
 cout<<sk.min()<<endl;
 cout<<sk.pop()<<endl;
 cout<<sk.min()<<endl;
 cout<<sk.pop()<<endl;
 cout<<sk.min()<<endl;
 cout<<sk.pop()<<endl;
 cout<<sk.min()<<endl;
 cout<<sk.pop()<<endl;
 cout<<sk.min()<<endl;
 cout<<sk.pop()<<endl;

 ;
 }

面试题-Stack的最小值o(1)的更多相关文章

  1. 【老鸟学算法】包含 min函数的栈设计——java实现

    要求: 1. 定义栈的数据结构,要求添加一个 min函数,能够得到栈的最小元素. 2. 要求函数 min.push 以及 pop 的时间复杂度都是 O(1). 这是考验“栈”数据结构设计.众所周知,栈 ...

  2. 《剑指Offer》第20题(Java实现):定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。

    一.题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 二.思路解析 首先定义一个Integer类型的栈,记为stack,此栈用来完成数据 ...

  3. 如何在网页中用echarts图表插件做出静态呈现效果

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  4. echarts使用结合时间轴timeline动态刷新案例

    1.echarts简介 ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Fire ...

  5. 设计一个Stack,要求Push、Pop、获取最大最小值时间复杂度都为O(1)

    面试的时候,面试官让设计一个栈,要求有Push.Pop和获取最大最小值的操作,并且所有的操作都能够在O(1)的时间复杂度完成. 当时真没啥思路,后来在网上查了一下,恍然大悟,只能恨自己见识短浅.思路不 ...

  6. [原]Java面试题-输入一个整型数组,找出最大值、最小值,并交换。

    [Date]2013-09-19 [Author]wintys (wintys@gmail.com) http://wintys.cnblogs.com [Content]: 1.面试题 输入一个整型 ...

  7. 带最小值操作的栈 · Min Stack

    [抄题]: 实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值. 你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成. [思维问题]: [一句话思 ...

  8. 【Java面试题】解释内存中的栈(stack)、堆(heap)和静态存储区的用法

    Java面试题:解释内存中的栈(stack).堆(heap)和静态存储区的用法 堆区: 专门用来保存对象的实例(new 创建的对象和数组),实际上也只是保存对象实例的属性值,属性的类型和对象本身的类型 ...

  9. 剑指Offer:面试题8——旋转数组的最小值(java实现)

    题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入 一个递增排序的数组的一个旋转 输出 旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的 ...

随机推荐

  1. mac安装tensorflow报错

    问题:mac安装tensorflow过程中,爆出oserror:permission denied 解决方案:关闭mac的sip,然后sudo安装 关闭sip的方法:重启mac,按住command+R ...

  2. java并发容器类

    本文主要介绍java并发容器相关实现类,collections节点下接口方法介绍. Queue Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是Blocking ...

  3. 设置一个顺手的Xcode

    授权转载,作者:吴白(微博) 手指在键盘上飞速跳跃,终端上的代码也随着飞舞,是的这确实很酷.优秀的程序员总是这么一群人,他们不拘于现状,不固步自封,他们喜欢新奇的事,他们把自己发挥到极致. 指法攻略 ...

  4. LINUX端口查看

    e切依燃   LINUX端口查看 查看文件数 ls | wc -w lsof -i:80

  5. JMeter学习-032-JMeter常见四种变量简介

    在JMeter自动化测试脚本编写过程中,经常需要对测试脚本进行一些参数设置.例如,设置测试计划的全局变量(方便切换不同的测试环境).样本线程(HTTP请求等)的参数传递等. 通常,JMeter中常用的 ...

  6. 【OpenWRT】【RT5350】【三】MakeFile文件编写规则和OpenWRT驱动开发步骤

    一.Makefile文件编写 http://www.cnblogs.com/majiangjiang/articles/3218002.html 可以看下上面的博客,总结的比较全了,在此不再复述 二. ...

  7. 简单理解js的prototype属性

    在进入正文之前,我得先说说我认识js的prototype这个东西的曲折过程. 百度js的prototype的文章,先看看,W3School关于prototype的介绍: 你觉得这概念适合定义js的pr ...

  8. inotify监控目录变化重启服务器tornado项目

    pycharm 配置了提交服务器项目每次pycharm修改后,虽然保存到服务器但是项目还得自己去服务器kill再启动.就花几分钟写了shell脚本用于监控项目目录变化并重启tornado项目的脚本 如 ...

  9. itertools模块

    itertools模块中有很多函数,返回的是一个迭代器 参考: http://www.wklken.me/posts/2013/08/20/python-extra-itertools.html#_1

  10. spark读取hbase数据

    def main(args: Array[String]): Unit = { val hConf = HBaseConfiguration.create(); hConf.set("hba ...