Coding Problem-Solving Study Plan
Week 1: Foundation Techniques
1. Brute Force
- Concept: Test all possible solutions and pick the correct one.
- Problems:
- Generate all subsets of a set.
- Find all permutations of a string.
2. Recursion
- Concept: Solve a problem by breaking it into smaller instances of itself.
- Key Skills: Base case, recursive case.
- Problems:
- Factorial of a number.
- Fibonacci sequence.
- Binary search (recursive version).
Key Goals: Recognize brute-force problems and recursive structures.
Week 2: Divide and Conquer
- Concept: Break -> Solve -> Combine.
- Problems:
- Merge Sort.
- Quick Sort.
- Binary Search.
Practice Tasks: Solve problems involving Divide and Conquer on Leetcode/Codeforces.
Week 3: Greedy & Two Pointers
1. Greedy Algorithms
- Make optimal choices step-by-step.
- Problems:
- Activity Selection.
- Fractional Knapsack.
2. Two Pointers Technique
- Efficient linear optimization.
- Problems:
- Pair with Given Sum.
- Removing duplicates in a sorted array.
Week 4: Dynamic Programming (DP)
- Concept: Overlapping subproblems.
- Steps:
- Top-Down (Memoization)
- Bottom-Up (Tabulation)
- Problems:
- Fibonacci Number (DP).
- Coin Change.
- Longest Common Subsequence.
Key Insight: Combine recursion + memoization for optimization.
Week 5: Backtracking & Graphs
1. Backtracking
- Problems:
- N-Queens.
- Sudoku Solver.
2. Graph Techniques
- BFS and DFS.
- Shortest Path Algorithms.
Week 6: Advanced Techniques
- Sliding Window (Longest Subarray problems).
- Bit Manipulation (Check powers of two).
Ongoing Practice Plan:
- Solve 3 problems/week on:
- Leetcode
- Codeforces
- GeeksforGeeks.
- Identify patterns, analyze time/space complexities, and revise weekly.