Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
- push(x) -- Push element x onto stack.
- pop() -- Removes the element on top of the stack.
- top() -- Get the top element.
- getMin() -- Retrieve the minimum element in the stack.
Example:
MinStack minStack = new MinStack(); minStack.push(-2); minStack.push(0); minStack.push(-3); minStack.getMin(); --> Returns -3. minStack.pop(); minStack.top(); --> Returns 0. minStack.getMin(); --> Returns -2.<Solution>
這題要用兩個 stack 來實做
一個就是正常的 stack,一個是存放該階段最小值的 stack
分開來處理就可以了
code 如下
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class MinStack { | |
public: | |
/** initialize your data structure here. */ | |
MinStack() { | |
} | |
void push(int x) { | |
if(minStk.empty() || (x <= minStk.top())) { | |
minStk.push(x); | |
} | |
normalStk.push(x); | |
} | |
void pop() { | |
if(normalStk.top() == minStk.top()) { | |
minStk.pop(); | |
} | |
normalStk.pop(); | |
} | |
int top() { | |
return normalStk.top(); | |
} | |
int getMin() { | |
return minStk.top(); | |
} | |
private: | |
stack<int> normalStk, minStk; | |
}; |
沒有留言:
張貼留言