剑指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 ...
随机推荐
- Spring REST实践之客户端和测试
RestTemplate 可参考spring实战来写这部分. RestTemplate免于编写乏味的样板代码,RestTemplate定义了33个与REST资源交互的方法,涵盖了HTTP动作的各种形式 ...
- heritrix启动问题修正
今天抽时间想看看其他蜘蛛的情况,于是下载了heritrix-1.14.2.搜索了一下相关的安装介绍.基本步骤如下: (1)解压下载的heritrix-1.14.2.zip的压缩包,如将其放在E:\da ...
- GetWindowThreadProcessId用法(转)
函数功能:该函数返回创建指定窗口线程的标识和创建窗口的进程的标识符,后一项是可选的. 函数原型:DWORD GetWindowThreadProcessld(HWND hwnd,LPDWORD lpd ...
- 转载:div和flash层级关系问题
转自:http://sin581.blog.163.com/blog/static/860578932012813112334404/ 问题: ie下默认好像div层级没有flash层级高,也 ...
- 功能强大支持64位操作系统的转Flash软件(doc转swf):Print2Flash
Print2Flash是一个虚拟打印机类的文档转换软件,因此只要是可打印的文档,都可以轻松转换为Flash文件,即SWF动画,特别是用于转换PDF.Word.Excel.PowerPoint等文档为S ...
- Qt之图标切分与合并
有些时候会将多张有相同功能的图片绘制成一张,不管是使用或者绘制上都会方便很多.对美工与开发者来说也都是一件省事.省力.更省心的方式.二全其美,又何乐而不为呢... 例如:QQ等级 0-9可以组 ...
- PageValidate 类
转载:http://www.cnblogs.com/sufei/archive/2010/01/14/1648028.html using System.Text.RegularExpressions ...
- Hex-Rays decompiler type definitions and convenience macros
/****************************************************************************************** Copyrigh ...
- DirectSound的应用
假设仅仅使用PlaySound()这个API函数来表现声音效果的话,那么就无法表现出声音的混音效果,由于PlaySound在播放还有一个声音时,必定会导致现有声音的停止.因此,使用 PlaySound ...
- [C++基础]C++中静态成员函数如何访问非静态成员
#include <iostream> /* 静态成员函数只能访问静态数据成员.静态成员函数和类以外的函数和数据,不能访问非静态数据成员,但静态成员函数或静态数据成员可由任意访问许可的函数 ...