面试题-Stack的最小值o(1)
// 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)的更多相关文章
- 【老鸟学算法】包含 min函数的栈设计——java实现
要求: 1. 定义栈的数据结构,要求添加一个 min函数,能够得到栈的最小元素. 2. 要求函数 min.push 以及 pop 的时间复杂度都是 O(1). 这是考验“栈”数据结构设计.众所周知,栈 ...
- 《剑指Offer》第20题(Java实现):定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
一.题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 二.思路解析 首先定义一个Integer类型的栈,记为stack,此栈用来完成数据 ...
- 如何在网页中用echarts图表插件做出静态呈现效果
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- echarts使用结合时间轴timeline动态刷新案例
1.echarts简介 ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Fire ...
- 设计一个Stack,要求Push、Pop、获取最大最小值时间复杂度都为O(1)
面试的时候,面试官让设计一个栈,要求有Push.Pop和获取最大最小值的操作,并且所有的操作都能够在O(1)的时间复杂度完成. 当时真没啥思路,后来在网上查了一下,恍然大悟,只能恨自己见识短浅.思路不 ...
- [原]Java面试题-输入一个整型数组,找出最大值、最小值,并交换。
[Date]2013-09-19 [Author]wintys (wintys@gmail.com) http://wintys.cnblogs.com [Content]: 1.面试题 输入一个整型 ...
- 带最小值操作的栈 · Min Stack
[抄题]: 实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值. 你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成. [思维问题]: [一句话思 ...
- 【Java面试题】解释内存中的栈(stack)、堆(heap)和静态存储区的用法
Java面试题:解释内存中的栈(stack).堆(heap)和静态存储区的用法 堆区: 专门用来保存对象的实例(new 创建的对象和数组),实际上也只是保存对象实例的属性值,属性的类型和对象本身的类型 ...
- 剑指Offer:面试题8——旋转数组的最小值(java实现)
题目描述: 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入 一个递增排序的数组的一个旋转 输出 旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的 ...
随机推荐
- 跳转到下一个activity
/* * 第一个跳转代码 */ button.setOnClickListener(new OnClickListener() { @Override public void onClick(View ...
- Vue.js双向绑定的实现原理
Vue.js最核心的功能有两个,一是响应式的数据绑定系统,二是组件系统.本文仅探究几乎所有Vue的开篇介绍都会提到的hello world双向绑定是怎样实现的.先讲涉及的知识点,再参考源码,用尽可能少 ...
- poj3740
#include<stdio.h>#include<iostream>int map[16][300];int vistx[16];int visty[300];int zhe ...
- WordPress基础:自定义菜单
需要自定义一个菜单,可以访问后台->外观->菜单
- Method Swizzling
学习博客: http://www.cocoachina.com/ios/20160121/15076.html (这个作者太牛了,写了我一直想知道的类簇的swizz方法) 一. 一般的swizz 先给 ...
- 更改ubuntu多系统启动顺序
电脑上双系统,启动时界面如下 ubuntu advance ubuntu option windows 在/boot/grub/grub.cfg中,查看到可以简单的修改/etc/defaulg/gru ...
- 弱网测试IOS
IOS测弱网非常方便,在设置-开发者-NETWORK LINK CONDITIONER的Status 进入后可以看到IOS自带了100%LOSS.3G.WiFi等常见场景 可以点击图标i进行查看或编辑 ...
- BundleConfig.cs
namespace Knockout.App_Start { public class BundleConfig { public static void RegisterBundles(Bundle ...
- SELENIUM2 使用JavascriptExecutor在页面Javascipt执行
目的: 1. 执行一段JS,来改变HTML2. 一些非标准控件无法用selenium2的API时,可以执行JS的办法来取代 主要操作:JavascriptExecutor j = (Javascrip ...
- Python开发【前端】:Ajax
Ajax Ajax即"Asynchronous Javascript And XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术,AJAX = ...