剑指Offer19 包含min函数的栈
/*************************************************************************
> File Name: 19_MinInStack.cpp
> Author: Juntaran
> Mail: JuntaranMail@gmail.com
> Created Time: 2016年08月30日 星期二 19时29分48秒
************************************************************************/ #include <stdio.h>
#include <bits/stdc++.h> using namespace std; template<class T>
class minStack
{
private:
stack<T> stack_data;
stack<T> stack_min; public: void push(T &value)
{
// 新元素入栈
stack_data.push(value); // 新元素比之前最小元素小的时候,新元素进入辅助栈
// 否则把之前最小元素重复插入辅助栈
if (stack_min.size()== || value<stack_min.top())
stack_min.push(value);
else
stack_min.push(stack_min.top());
}
T pop()
{
assert(stack_data.size()> && stack_min.size()>);
stack_data.pop();
stack_min.pop();
return stack_data.top();
}
T min()
{
assert(stack_data.size()> && stack_min.size()>);
return stack_min.top();
}
}; int main()
{
minStack<int> mStack;
for (int i = ; i < ; i++)
{
cout << i << " push" << endl;
mStack.push(i);
}
cout << "min is " << mStack.min() << endl;
for (int i = ; i < ; i++)
{
cout << mStack.pop() << " pop" << endl;
}
cout << "min is " << mStack.min() << endl;
for (int i = ; i < ; i++)
{
cout << i << " push" << endl;
mStack.push(i);
}
cout << "min is " << mStack.min() << endl;
for (int i = ; i < ; i++)
{
cout << mStack.pop() << " pop" << endl;
}
int k = -;
mStack.push(k);
cout << "min is " << mStack.min() << endl;
cout << endl;
}
剑指Offer19 包含min函数的栈的更多相关文章
- 剑指Offer30——包含min函数的栈
剑指Offer30--包含min函数的栈 1. 题目简述 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数在该栈中,调用min.push及pop的时间复杂度是O(1). 2. 题 ...
- 剑指Offer 包含min函数的栈
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数. 思路: 这个题是想得到一个时间复杂度为O(1)的min函数,所以应用一个辅助栈,压的时候,如果A栈的压入比B栈压入 ...
- 剑指offer——包含min函数的栈
题目:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度为O(1)) 该题是自己第一次采用编程的方式来实现Java中栈的功能,故直接借鉴了大牛的代码 import ...
- 剑指offer--27.包含min函数的栈
时间限制:1秒 空间限制:32768K 热度指数:252822 本题知识点: 栈 算法知识视频讲解 题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为 ...
- python剑指offer 包含min函数的栈
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). # -*- coding:utf-8 -*- class Solution: def ...
- 剑指Offer-20.包含min函数的栈(C++/Java)
题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 分析: 因为题目要求得到栈中最小元素的min函数时间复杂度为O(1),这里便不选择遍历栈 ...
- 用js刷剑指offer(包含min函数的栈)
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 牛客网链接 js代码 const stack1 = [] const stack2 = ...
- 剑指:包含min函数的栈(min栈)
题目描述 设计一个支持 push,pop,top 等操作并且可以在 O(1) 时间内检索出最小元素的堆栈. push(x)–将元素x插入栈中 pop()–移除栈顶元素 top()–得到栈顶元素 get ...
- 剑指offer-包含min函数的栈20
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). class Solution: def __init__(self): self.st ...
随机推荐
- 彻底解决cookie欺骗(有问题)
不要在公共场登陆 自己重要的用户名和密码: 不用的时候,[关闭浏览器],只点[退出],还是会有安全隐患.--没有绝对的安全由于http的无状态性,总不能每次访问页面都要输入用户名和密码,所以为了保持状 ...
- mysql index的长度限制
在InnoDB Storage Engine中单独一个列的最大的索引长度为767bytes,utf8字符集中,一个字符占3个字节,所以如果列的类型为char,那么要想在此列上建立索引,此列最多只能有2 ...
- 《Java程序员修炼之道》
原子类:java.util.concurrent.atomic 线程锁:java.util.concurrent.locks 对付死锁:boolean acquired = lock.tryLock( ...
- 两个ERP 库存调拨
(A) ERP 负责线上销售,公司为扩大规模,发展线下实体 采用另一套ERP(B) A 和B 都是 单独的ERP ,为了使两个ERP 能高效地工作,需开发一个单独衔接模块实现 ,库存的调拨,新品的 ...
- 5.迪米特法则(Law Of Demeter)
1.定义 狭义的迪米特法则定义:也叫最少知识原则(LKP,Least Knowledge Principle).如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用.如果其中的一个类需要 ...
- C#与excel互操作的错误无法将类型为“Excel.ApplicationClass”的COM 对象强制转换为接口类型“Excel._Application”
如果您使用的电脑要操作的是office2003而之前使用过office2007使用此方法可解决您的问题 无法将类型为“Microsoft.Office.Interop.Excel.Applicatio ...
- MySQL 备份恢复
1:备份常用工具: mysqldump, xtrabackup mysqldump: 原生数据导出工具,以sql的形式导出保存 xtrabackup: percona团队提供的备份工具,基于文件系统的 ...
- ASP.NET中上传并读取Excel文件数据
在CSDN中,经常有人问如何打开Excel数据库文件.本文通过一个简单的例子,实现读取Excel数据文件. 首先,创建一个Web应用程序项目,在Web页中添加一个DataGrid控件.一个文件控件和一 ...
- Cocos2d-x 3.0 动作
http://blog.csdn.net/lnb333666/article/details/16858635 //运行一个action动作对象 runAction("action对象&qu ...
- php实现工厂模式
设计模式-使用php实现工厂方法模式 [概要] 创建型模式 定义一个用于创建对象的接口,让子类决定实例化哪一个类.Factory Method使用一个类的实例化延迟到其子类[GOF95] [结构图] ...