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:
@@ -1,18 +1,103 @@
|
||||
#+PROPERTY: STUDY_DECK_02
|
||||
* TODO 0208. Implement Trie Prefix Tree :medium:
|
||||
:PROPERTIES:
|
||||
:NEETCODE: [[file:../../roadmap.org::*0208. Implement Trie Prefix Tree][Roadmap]]
|
||||
:NEETCODE: [[file:../../roadmap.org::*0208. Implement Trie Prefix Tree][0208. Implement Trie Prefix Tree]]
|
||||
:END:
|
||||
|
||||
A *trie* (pronounced as "try") or *prefix tree* is a tree data structure used to efficiently store and retrieve keys in a dataset of strings. There are various applications of this data structure, such as autocomplete and spellchecker.
|
||||
|
||||
Implement the Trie class:
|
||||
|
||||
- ~Trie()~ Initializes the trie object.
|
||||
|
||||
- ~void insert(String word)~ Inserts the string ~word~ into the trie.
|
||||
|
||||
- ~boolean search(String word)~ Returns ~true~ if the string ~word~ is in the trie (i.e., was inserted before), and ~false~ otherwise.
|
||||
|
||||
- ~boolean startsWith(String prefix)~ Returns ~true~ if there is a previously inserted string ~word~ that has the prefix ~prefix~, and ~false~ otherwise.
|
||||
|
||||
*Example 1:*
|
||||
|
||||
|
||||
#+begin_src
|
||||
Input
|
||||
["Trie", "insert", "search", "search", "startsWith", "insert", "search"]
|
||||
[[], ["apple"], ["apple"], ["app"], ["app"], ["app"], ["app"]]
|
||||
Output
|
||||
[null, null, true, false, true, null, true]
|
||||
|
||||
Explanation
|
||||
Trie trie = new Trie();
|
||||
trie.insert("apple");
|
||||
trie.search("apple"); // return True
|
||||
trie.search("app"); // return False
|
||||
trie.startsWith("app"); // return True
|
||||
trie.insert("app");
|
||||
trie.search("app"); // return True
|
||||
#+end_src
|
||||
|
||||
|
||||
*Constraints:*
|
||||
|
||||
- ~1 <= word.length, prefix.length <= 2000~
|
||||
|
||||
- ~word~ and ~prefix~ consist only of lowercase English letters.
|
||||
|
||||
- At most ~3 * 10^{4}~ calls *in total* will be made to ~insert~, ~search~, and ~startsWith~.
|
||||
|
||||
** TODO Approach
|
||||
Write your approach here.
|
||||
|
||||
** TODO Python
|
||||
#+begin_src python
|
||||
class Trie:
|
||||
|
||||
def __init__(self):
|
||||
|
||||
|
||||
def insert(self, word: str) -> None:
|
||||
|
||||
|
||||
def search(self, word: str) -> bool:
|
||||
|
||||
|
||||
def startsWith(self, prefix: str) -> bool:
|
||||
|
||||
|
||||
|
||||
# Your Trie object will be instantiated and called as such:
|
||||
# obj = Trie()
|
||||
# obj.insert(word)
|
||||
# param_2 = obj.search(word)
|
||||
# param_3 = obj.startsWith(prefix)
|
||||
#+end_src
|
||||
|
||||
** TODO C++
|
||||
#+begin_src cpp
|
||||
class Trie {
|
||||
public:
|
||||
Trie() {
|
||||
|
||||
}
|
||||
|
||||
void insert(string word) {
|
||||
|
||||
}
|
||||
|
||||
bool search(string word) {
|
||||
|
||||
}
|
||||
|
||||
bool startsWith(string prefix) {
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Your Trie object will be instantiated and called as such:
|
||||
* Trie* obj = new Trie();
|
||||
* obj->insert(word);
|
||||
* bool param_2 = obj->search(word);
|
||||
* bool param_3 = obj->startsWith(prefix);
|
||||
*/
|
||||
#+end_src
|
||||
|
||||
Reference in New Issue
Block a user