Files
cpp-flashcards/org/study_deck_02/dsa/stack/0155-min-stack.org
T

119 lines
2.1 KiB
Org Mode
Raw Normal View History

2026-06-01 18:12:40 +08:00
#+ANKI_DECK: study_deck_02
* TODO 0155. Min Stack :medium:
:PROPERTIES:
:NEETCODE: [[file:../../roadmap.org::*0155. Min Stack][0155. Min Stack]]
:END:
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
Implement the ~MinStack~ class:
- ~MinStack()~ initializes the stack object.
- ~void push(int val)~ pushes the element ~val~ onto the stack.
- ~void pop()~ removes the element on the top of the stack.
- ~int top()~ gets the top element of the stack.
- ~int getMin()~ retrieves the minimum element in the stack.
You must implement a solution with ~O(1)~ time complexity for each function.
*Example 1:*
#+begin_src
Input
["MinStack","push","push","push","getMin","pop","top","getMin"]
[[],[-2],[0],[-3],[],[],[],[]]
Output
[null,null,null,null,-3,null,0,-2]
Explanation
MinStack minStack = new MinStack();
minStack.push(-2);
minStack.push(0);
minStack.push(-3);
minStack.getMin(); // return -3
minStack.pop();
minStack.top(); // return 0
minStack.getMin(); // return -2
#+end_src
*Constraints:*
- ~-2^{31} <= val <= 2^{31} - 1~
- Methods ~pop~, ~top~ and ~getMin~ operations will always be called on *non-empty* stacks.
- At most ~3 * 10^{4}~ calls will be made to ~push~, ~pop~, ~top~, and ~getMin~.
** TODO Approach
Write your approach here.
** TODO Python
#+begin_src python
class MinStack:
def __init__(self):
def push(self, val: int) -> None:
def pop(self) -> None:
def top(self) -> int:
def getMin(self) -> int:
# Your MinStack object will be instantiated and called as such:
# obj = MinStack()
# obj.push(val)
# obj.pop()
# param_3 = obj.top()
# param_4 = obj.getMin()
#+end_src
** TODO C++
#+begin_src cpp
class MinStack {
public:
MinStack() {
}
void push(int val) {
}
void pop() {
}
int top() {
}
int getMin() {
}
};
/**
* Your MinStack object will be instantiated and called as such:
* MinStack* obj = new MinStack();
* obj->push(val);
* obj->pop();
* int param_3 = obj->top();
* int param_4 = obj->getMin();
*/
#+end_src