【面试题】剑指offer21
来源:互联网 发布:手机壁纸diy软件 编辑:程序博客网 时间:2024/05/21 13:48
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,pop,push的时间复杂度都为O(1)
#include<stack>#include<cassert>#include<iostream>using namespace std;template<typename T>class MyStack{public: MyStack() {} void StackPush(const int& x) { _data.push(x); if(_min.size()==0||_min.top()>x) _min.push(x); else _min.push(_min.top()); } void StackPop() { assert(_data.size()>0&&_min.size()>0); _data.pop(); _min.pop(); } void StackMin() { assert(_data.size()>0&&_min.size()>0); cout<< _min.top()<<endl; } void PrintStack() { stack<T> s1,s2; s1=_data; s2=_min; cout<<"_data: "<<endl; while(s1.size()) { cout<<s1.top()<<" "; s1.pop(); } cout<<endl; cout<<"_min"<<endl; while (s2.size()) { cout<<s2.top()<<" "; s2.pop(); } cout<<endl; }private: stack<T> _data; stack<T> _min;};void test(){ MyStack<int> s; s.StackPush(3); s.StackPush(4); s.StackPush(2); s.StackPush(1); s.PrintStack(); s.StackMin(); s.StackPop(); s.StackPop(); s.StackMin(); s.PrintStack(); s.StackPush(0); s.StackMin(); s.PrintStack();}
#include "Stack.h"int main(){ test(); system("pause"); return 0;}
0 0
- 【面试题】剑指offer21
- 【面试题】剑指offer21--求栈里面的最小的数字
- 剑指offer21-包含min函数的栈
- 剑指Offer21包含min函数的栈
- 包含min的栈~~剑指offer21题
- 剑指offer21:包含min函数的栈
- 剑指offer21包含min函数的栈
- 剑指offer21从上到下打印二叉树
- 剑指offer21--二叉树路径之和为整数
- 剑指offer 面试题
- 【面试题】剑指offer10
- 【面试题】剑指offer11
- 剑指offer面试题
- 【面试题】剑指offer14
- 【面试题】剑指offer18
- 【面试题】剑指offer20
- 剑指offer面试题总结
- 剑指offer面试题06
- Problem--546A--Codeforces--Soldier and Bananas
- 关于IOException parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml]的解决
- Cookie 和 Session 的使用简记
- 371. Sum of Two Integers
- JavaScript for Kids 学习笔记1. 学习环境
- 【面试题】剑指offer21
- Linux下安装Hadoop集群(三台一主二从)
- Android消息机制(AsyncTask操控进度条(颜色)线程的用法)
- java web项目,post请求发送数据太大的处理方法
- 设计模式-适配器模式
- iOS 防止按钮多次点击造成多次响应的方法
- QtQuick 中的 qml 与 Qt 的 C++
- 一只大二狗的Android历程--自定义按钮样式(补充)
- BUPT OJ 丁神又去谷歌