A comprehensive collection of coding interview problems organized by algorithm topics and data structures. This repository contains solutions to problems from various platforms including Codility, LeetCode, and common interview questions.
The repository is organized by algorithm types and topics for easy navigation and focused practice:
-
arrays/ - Array manipulation problems
rotation/- Array rotation algorithmssearching/- Search algorithms, counting elements, finding leaderssubarrays/- Maximum subarray, subset problems, Kadane's algorithm
-
dynamic_programming/ - Dynamic programming solutions
fibonacci/- Fibonacci variations (top-down, bottom-up, matrix, formula)knapsack/- Knapsack problem implementationscoin_change/- Coin change and combination problemssubsequence/- Longest common subsequence, house robber, stock profit
-
strings/ - String manipulation problems
palindrome/- Palindrome checkersanagram/- Anagram detectionpattern_matching/- Word matching and pattern finding
-
prefix_sum/ - Prefix sum technique problems
-
sorting/ - Sorting algorithms and related problems
-
greedy/ - Greedy algorithm solutions
-
stack_queue/ - Stack and queue data structure problems
-
recursion/ - Recursive solutions
-
math/ - Mathematical algorithms (factorial, primes, divisors)
-
bit_manipulation/ - Binary operations and bit tricks
-
sliding_window/ - Sliding window technique (caterpillar method)
-
patterns/ - Number and shape pattern printing
- practice/codility/ - Codility platform-specific problems
- practice/interview_questions/ - Common interview questions
- Dynamic programming
- Back to Back SDE interview questions
- Explained some of codility questions
- Coding interview questions byte by byte
- 5 hours training on DP
- Leet code video solutions
- By Topic: Navigate to specific algorithm folders to practice particular problem types
- By Difficulty: Start with basic problems in
math/andrecursion/, then move todynamic_programming/ - By Platform: Practice platform-specific problems in the
practice/directory
- Each file contains working Python solutions with comments explaining the approach
- Many files include complexity analysis and alternative solutions
- Study the problem-solving patterns within each topic folder
- Review multiple variations of similar problems (e.g., different Fibonacci implementations)
Feel free to add more problems or improve existing solutions. When adding new problems:
- Place them in the appropriate algorithm category
- Include comments explaining the approach
- Add time and space complexity analysis
- Reference the problem source if applicable