实现push pop min皆为O(1)的栈
来源:互联网 发布:日历js脚本 编辑:程序博客网 时间:2024/06/05 19:10
前些时间笔试,遇到这样一道题,要求实现一个push、pop、min操作皆为O(1)的栈。当时想到的是使用堆或者红黑树维护最小值,这显然都是无法达到O(1)要求的。后来参考网上思路,实现逻辑也很简洁,就是使用另一个栈维护一个最小元素集:
#include <iostream>#include <stack>#include <assert.h>using namespace std;template<class T> class mystack{private:stack<T> stc;stack<T> minstc;public:void push(T ele){stc.push(ele);if(minstc.size() == 0 || ele <= minstc.top()){minstc.push(ele);}}void pop(){assert(stc.size() > 0);if(stc.top() == minstc.top()){minstc.pop();}stc.pop();}T min(){return minstc.top();}};int main(){mystack<int> ms;ms.push(2);cout<<ms.min()<<endl;ms.push(1);cout<<ms.min()<<endl;ms.push(1);cout<<ms.min()<<endl;}
0 0
- 实现push pop min皆为O(1)的栈
- push, pop, min 都为O(1)的栈
- 带MIN函数的栈实现(push pop min 操作都只花O(1))
- 实现pop push min操作时间复杂度为O(1)的栈结构
- 实现一个栈,要求Push/Pop/Min(返回最小值)的时间复杂度为O(1)
- 实现一个栈的pop,push,Min(最小值),时间复杂度为O(1)
- 实现一个栈,要求push,pop,Min的操作时间复杂度为O(1)
- 实现一个栈, 其 Push,Pop,Min 操作的 时间复杂度 均为 O( 1 )
- 实现一个栈,push、pop、求栈中最小值min的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push、Pop、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈,要求pop,push,Min,时间复杂度为O(1)
- 构造栈的数据结构,要求实现min函数,通过min函数取得栈中的最小值。要求PUSH, POP, MIN的时间复杂度为O(1)
- 实现一个栈Stack,Push、Pop、Min(返回最小值的操作)的时间复杂度为O(1)
- 【栈队列】实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 栈--实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 面试题(实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1))
- 【数据结构】实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈,要求实现Push(入栈)、Pop(出栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 常用系统的下载链接
- 关于dsp中的bootmode资料
- 使用HttpURLConnection和使用HttpClient方式请求网络采用get方式和post方式请求数据
- uva 348 Optimal Array Multiplication Sequence
- (三)线程同步工具集_2---控制并发访问资源的多个副本
- 实现push pop min皆为O(1)的栈
- 成员模板2
- 更改servlet插件自动生成的内容
- 【Leetcode】Roman to Integer JAVA
- servlet生命周期
- MAC下解决访问本地JSP页面500和404问题
- hdu1243
- 程序性能分析及性能测试
- 解决android帮助文档打开慢