赞
踩
- /*
- * Usage:
- * ./stack_queue <input.txt
- *
- * input.txt:
- * 10 3 4 1 7
- */
- #include<iostream>
- #include<stack>
- #include<algorithm>
- using namespace std;
- #define MAXNUM 100000
-
- struct StackGetMin {
- void push(int x) {
- elements.push(x);
- if (minStack.empty() || x <= minStack.top())
- minStack.push(x);
- }
- bool pop() {
- if (elements.empty()) return false;
- if (elements.top() == minStack.top())
- minStack.pop();
- elements.pop();
- return true;
- }
- bool getMin(int &min) {
- if (minStack.empty()) {
- return false;
- } else {
- min = minStack.top();
- return true;
- }
- }
- bool empty() {
- if(minStack.empty())
- return true;
- else
- return false;
- }
- int top() {
- return elements.top();
- }
- stack<int> elements;
- stack<int> minStack;
- };
-
-
- struct minQueue {
- bool getMin(int &m) {
- int a,b;
- if(!A.getMin(a)) a = MAXNUM;
- if(!B.getMin(b)) b = MAXNUM;
- m = min(a,b);
- return true;
- }
- void enqueue(int x) {
- B.push(x);
- }
- int dequeue() {
- if (A.empty()) {
- while(!B.empty()) {
- A.push(B.top());
- B.pop();
- }
- }
- int ret = A.top();
- A.pop();
- return ret;

代码:
参考资料
1. http://www.leetcode.com/2010/11/stack-that-supports-push-pop-and-getmin.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。