Diving Deep into DSA on My Journey to L5-L6! π
2024, May 08
π Day 15 of my journey to becoming an L5-L6 developer!
π Topics Covered So Far:
- Array & Hashing
- Two Pointers
- Sliding Window
- Stack
- Binary Search
- Queue
- Priority Queue
- Linked List
- Trees
- Recursion
- Graphs
- Dynamic Programming
- Backtracking
π© Pro Tips & Personal Insights:
- Two Pointers: Like sliding windows, but with limited pointers. Great for optimizing solutions.
- Sliding Window: Start with a valid window, add items, and remove them if the window becomes invalid.
- Stack: Think of it as a place to store things for later, in reverse recursive order.
- Binary Search: The magic of reducing your domain on every step to find the item efficiently.
- Linked List: A node that knows only about its adjacent nodes.
- Trees: Do things for one node, then make it recursive for all. Like a domino effect!
- Recursion: A powerful tool to solve problems by breaking them down into smaller, manageable pieces.
- Dynamic Programming: Solve via recursion, add cache, convert into iterative solution, then optimize space. Voila!
- Backtracking: When you need to explore all possible solutions without getting lost. Think of it as your problem-solving GPS.
Hereβs a neat trick for backtracking:
backtrack_arr = []
def rec(i):
backtrack_arr.append(s[i])
rec(i+1)
backtrack_arr.pop()
π Excited to dive deeper into DSA and reach my goal of becoming an L5-L6 developer! πͺ Follow along for more updates and tips!
π Following the roadmap on https://neetcode.io to master DSA!