实现一个带有取最小值min方法的栈,min方法将返回当前栈中的最小值。
你实现的栈将支持push,pop 和 min 操作,所有操作要求都在O(1)时间内完成。
建一个栈helpStack,用来存放从开始到目前位置的最小值,
1 /** 2 * lintcode12:带最小值操作的栈 3 * 狗剩的美丽家园 4 * 2017年12月4日15:33:23 5 */ 6 7 class MinStack { 8 public: 9 stack<int> mainStack; 10 stack<int> helpStack; 11 MinStack() { 12 // do initialization if necessary 13 } 14 15 void push(int number) { 16 // write your code here 17 int top; 18 mainStack.push(number); 19 20 if (!helpStack.empty()) { 21 top = helpStack.top(); 22 } else { 23 top = number; 24 } 25 26 if (number > top) { 27 helpStack.push(top); 28 } else { 29 helpStack.push(number); 30 } 31 } 32 33 int pop() { 34 // write your code here 35 if (!mainStack.empty()) { 36 int data = mainStack.top(); 37 mainStack.pop(); 38 helpStack.pop(); 39 return data; 40 } 41 } 42 43 int min() { 44 // write your code here 45 if (!helpStack.empty()) { 46 int data = helpStack.top(); 47 return data; 48 } 49 } 50 };