Learning Data Structures & Algorithms (DSA) is incomplete without consistent problem-solving. Real mastery comes from applying concepts to unfamiliar problems, recognizing patterns, handling edge cases, and gradually building speed, confidence, and intuition.
This section covers:
- Where to practice
- How to practice effectively
- Competitive programming tips
- A topic-wise practice roadmap
- Sample practice questions (problem prompts)
Where to Practice
1. LeetCode (Interview-Focused)
Best suited for:
- Coding interview preparation
- Pattern-based problem solving
- Company-tagged questions (FAANG, startups)
How to use LeetCode effectively
- Start with Easy → Medium → Hard
- Solve problems by pattern, not randomly
- Re-solve the same problem after 7–10 days
- Read discussions after solving to compare approaches
- Track mistakes and alternative solutions
2. HackerRank (Structured Learning)
Best suited for:
- Beginners and fundamentals
- Clean, well-explained problem statements
- Language-specific practice tracks
Recommended tracks:
- Problem Solving
- Python / Java / C++ tracks
- Interview Preparation Kit
3. Codeforces (Competitive Programming)
Best suited for:
- Speed and implementation skills
- Tight constraints and tricky logic
- Math, greedy, and constructive thinking
- Live contest experience
Tip:
Don’t worry about rating initially—focus on learning from editorial solutions.
Competitive Programming Tips
Think from Constraints
| Input Size (n) | Acceptable Complexity |
|---|---|
| n ≤ 10³ | O(n²) |
| n ≤ 10⁵ | O(n log n) or O(n) |
| n ≤ 10⁶ | O(n) |
Use a Clean Template
import sys
input = sys.stdin.readline
Include:
- Fast input/output
- Helper functions
- Debug prints (remove later)
Always Test Edge Cases
- Empty input
- Single element
- All duplicates
- Negative numbers
- Already sorted / reverse sorted arrays
- Large input limits
What Interviewers Look For
- Correct and optimal approach
- Clear explanation of logic
- Time and space complexity
- Edge case handling
- Clean, readable code
Topic-Wise Practice Roadmap
Arrays and Strings
Skills to build
- Two pointers
- Sliding window
- Prefix sums
- Sorting tricks
Practice Questions
- Two Sum
- Best Time to Buy and Sell Stock
- Maximum Subarray
- Move Zeroes
- Longest Substring Without Repeating Characters
- Merge Intervals
Hashing
Skills to build
- Frequency counting
- Fast lookup with dict/set
- Duplicate detection
Practice Questions
- Valid Anagram
- Group Anagrams
- Contains Duplicate
- Subarray Sum Equals K
- Longest Consecutive Sequence
Stack and Queue
Skills to build
- Stack simulation
- Monotonic stack
- BFS using queues
Practice Questions
- Valid Parentheses
- Min Stack
- Next Greater Element
- Daily Temperatures
- Sliding Window Maximum
Linked List
Skills to build
- Fast/slow pointers
- Reversal patterns
- Merge logic
Practice Questions
- Reverse Linked List
- Detect Cycle
- Merge Two Sorted Lists
- Remove Nth Node From End
- Intersection of Two Linked Lists
Trees
Skills to build
- DFS recursion
- BFS level-order traversal
- BST properties
Practice Questions
- Maximum Depth of Binary Tree
- Invert Binary Tree
- Level Order Traversal
- Validate Binary Search Tree
- Lowest Common Ancestor
- Diameter of Binary Tree
Graphs
Skills to build
- BFS / DFS templates
- Visited handling
- Shortest path logic
Practice Questions
- Number of Islands
- Clone Graph
- Course Schedule
- Shortest Path in Binary Matrix
- Network Delay Time
Dynamic Programming (DP)
Skills to build
- Define DP state
- Write transitions
- Space optimization
Practice Questions
- Climbing Stairs
- House Robber
- Coin Change
- Longest Increasing Subsequence
- Longest Common Subsequence
- Partition Equal Subset Sum
Greedy Algorithms
Skills to build
- Sorting + decision making
- Proving greedy correctness
Practice Questions
- Jump Game
- Gas Station
- Meeting Rooms
- Merge Intervals
- Minimum Arrows to Burst Balloons
Recursion and Backtracking
Skills to build
- State management
- Pruning
- Recursion tree visualization
Practice Questions
- Subsets
- Permutations
- Combination Sum
- N-Queens
- Sudoku Solver
Bit Manipulation
Skills to build
- XOR tricks
- Bit masking
- Bit counting
Practice Questions
- Single Number
- Missing Number
- Counting Bits
- Power of Two
- Subset Generation using Bitmask
Divide and Conquer
Skills to build
- Recursive splitting
- Merge logic
- Binary search on answer
Practice Questions
- Merge Sort Implementation
- Kth Largest Element (Quickselect)
- Search in Rotated Sorted Array
- Find Peak Element
- Median of Two Sorted Arrays
Advanced Graph Algorithms
Skills to build
- Topological sorting (DAGs)
- Strongly connected components
- All-pairs shortest paths
Practice Questions
- Course Schedule II
- Alien Dictionary
- Strongly Connected Components
- Floyd–Warshall Implementation
- A* shortest path (conceptual / grid-based)
Daily Practice Plan (Simple & Effective)
60–90 minutes per day
- 10 min → revise one pattern
- 45–60 min → solve 1–2 problems
- 10 min → write clean final solution + complexity
- 10 min → log mistakes and insights
Weekly Strategy
- Pick one topic per week
- Solve 15–25 problems
- Re-solve 3 old problems at week’s end
- Review patterns and common mistakes
Summary
To master DSA:
- Use LeetCode for interview patterns
- Use HackerRank for structured fundamentals
- Use Codeforces for speed and tricky logic
Practice topic-wise, track mistakes, revisit problems, and focus on understanding patterns—not memorization. Consistency beats intensity.
Leave a Reply