设计一个栈结构,满足一下条件:min,push,pop操作的时间复杂度为O(1)。
2014-11-14 00:00
316 查看
#include <iostream> #include <assert.h> using namespace std; #define MAXN 100 struct Data { int data; int minData; }; class MinStack { public: Data **data; int top; int size; public: MinStack() { size =MAXN; data = new Data*[MAXN]; top = 0; } ~MinStack() { delete[] data; } void push(int value) { assert(top != size); Data *d = new Data; d->data = value; d->minData = (top == 0)?value:data[top-1]->minData; if(d->minData > value) d->minData = value; data[top++] = d; } int pop() { assert(top != 0); return data[--top]->data; } int min() { assert(top != 0); return data[top-1]->minData; } }; int main() { MinStack s; s.push(1); s.push(2); s.push(0); cout << s.min()<<endl; s.pop(); cout << s.min()<<endl; return 0; }
相关文章推荐
- 微软100题40题-设计一个栈结构,满足一下条件:min,push,pop操作的时间复杂度为O(1)。
- 设计一个栈结构,满足一下条件:min,push,pop操作的时间复杂度为O(1)
- 剑指offer 21---实现一个栈, 要求实现Push( 出栈) 、 Pop( 入栈) 、 Min( 返回最小值的操作) 的时间复杂度为O(1)
- 实现一个栈,要求实现Push(入栈)、Pop(出栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个 能在O(1)时间复杂度 完成 Push、Pop、Min操作的 栈
- 实现一个栈Stack,要求实现Push(入栈)、Pop(出栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 【每日一题】实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 【Java】设计一个栈,并且push,pop和min三个方法的时间复杂度必须为O(1)
- 实现一个栈Stack,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈,要求Push(入栈),Pop(出栈),Min(返回最小值的操作)的时间复杂度为O(1)
- 1. 实现一个栈,要求实现 Push (出栈)、 Pop (入栈)、 Min (返回最小值的操作) 的时间复杂度为 O(1)
- 实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)
- 实现一个栈,要求实现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)~