feat: populate note files with problem descriptions and code stubs

Add populate-notes.mjs that fetches problem descriptions and
Python/C++ code stubs from LeetCode's GraphQL API. Populated
all 197 NeetCode 150 note files with:
- Problem description (examples, constraints)
- Python code stub (function signature)
- C++ code stub (function signature + includes)

API responses cached in leetcode/.cache/leetcode/ for instant re-runs.
This commit is contained in:
2026-06-01 17:22:07 +08:00
parent e798e449bd
commit 1dec88aaf2
198 changed files with 10459 additions and 534 deletions
+101 -1
View File
@@ -1,18 +1,118 @@
#+PROPERTY: STUDY_DECK_02
* TODO 0155. Min Stack :medium:
:PROPERTIES:
:NEETCODE: [[file:../../roadmap.org::*0155. Min Stack][Roadmap]]
: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