/competitive-programming

🔥 🖥️ Competitive programming guide, learning materials and my own coding solutions from Codechef, Leetcode,Geeks for Geeks, HackerRank, Spoj, Codebyte, InterviewBit, CodingBlock & other platforms

Primary LanguageC++Apache License 2.0Apache-2.0

Competitive-programming

The current repository contains a set of learning resources, and coding challenges solutions that I have implemented as result of my training, to ace a Big Tech interview that allowed me to receive an offer at Microsoft for a SWE intern role. NOT everything you may read in this repository is the overall knowledge requierd during an algorithms and data-structures round, but I have started from zero, just like you, and from zero to half-hero, almost everything produced or needed has been shared in this repository.

Technologies used

C++ Python Java

Get mentored by me

MentorCruise

Index of content

  1. Structure of the repository
  2. Platforms for Training
  3. When contribute
  4. How to contribute
  5. Connect with me

Structure of the Repository

Folder Content
Lectures (Algorithm and data-structures) Notes about Algorithm And Data Structures
Must know algorithms checklist Go to resources
System Design preparation System design interview preparation
Readings material Free e-books about Competitive Programming
Geeks For Geeks solutions Geeks For GfG coding solutions
HackerRank solutions My own HackerRank coding solutions
Codingblock solutions My own Codingblock coding solutions
CodeSignal solutions My own CodeSignal Solutions
CodeChef solutions My own Codechef coding solutions
UVA My own UVA Online Judge solutions
InterviewBit My Interview Bit solutions
Leetcode solutions My Leetcode solutions
learn_data_structures Warm App coding examples to learn Data Structures

## PLEASE If you need more material like this, nominate me as github start, to get help the project to gain more visibility and contributions

Best Platforms for training

Hackerrank InterViewBit GeeksForGeeks LeetCode Codingblocs Codesignal Codechef CodeForces Hackerearth

How to contribute

  1. Fork the repository
  2. Do the desired changes (add/delete/modify)
  3. Make a pull request

When contribute

  1. If there is no solution to a problem in the main branch.
  2. If your solution is asymptotically faster than the one in the main branch.
  3. If your algorithm is of the same time complexity but with reduced code size. In this case, comment out the original solution and make a pull request with your solution.
  4. If you have another method of solving the problem which is asymptotically slower than the original method then, comment your solution in the main file and make a pull request.
  5. If you would like to make any positive change to the lectures content

I appreciate any feedback

Constructive criticisms or code reviews of any kind are very much welcome.

If you have any questions about the solutions you can find here, feel free to contact me at: davidepollicino2015@gmail.com

Social Media

Github Linkedin

Support me

Paypal Me

Buy Me A Coffee

Incoming Materials

  1. Prefix Sum
  2. Sliding Window Technique
  3. Binary search
  4. GCD of two numbers in LogN
  5. Sieve of Eratosthenes, Segmented Sieve
  6. Modular arithmetic
  7. Bit Manipulation
  8. Greedy Algorithms
  9. Two Pointers
  10. Kadane's Algorithm
  11. Meet in the Middle Algorithm
  12. Recursion
  13. Divide and Conquer
  14. Next Greater/Smaller Element using Stack
  15. Problems related to Parenthesis
  16. Backtracking
  17. Problems related to Constructive Algorithms
  18. Problems related to Heap
  19. Inclusion-Exclusion Principle
  20. Finding nCr and nPr for Queries
  21. Rabin Karp Algorithm
  22. Prefix Function
  23. KMP Algorithm
  24. Z-Function
  25. Manacher's Algorithm
  26. DFS/BFS Traversal in Graph/Tree
  27. Diameter of Tree
  28. Euler Tour of Tree
  29. Finding LCA using Euler Tour
  30. Finding LCA using Binary Lifting
  31. Distance between two nodes
  32. Subtree Problems
  33. Connected Components, Topological Sort, Cycle Detection, Bipartite Check-in Graph
  34. Dijkstra's Algorithm
  35. Bellman-Ford Algorithm
  36. Floyd Warshall Algorithm
  37. Bridges in Graph
  38. Prim's Algorithm
  39. 0/1 BFS
  40. Dynamic Programming, DP with Bitmask, DP on trees
  41. Disjoint Set
  42. Kruskal's Algorithm
  43. Fenwick Trees, Binary Lifting on Fenwick Tree
  44. Matrix Exponentiation
  45. Sqrt Exponentiation
  46. Segment Trees
  47. Lazy Propagation on Segment Trees
  48. Sprague/Grundy Theorem
  49. Heavy Light Decomposition
  50. FFT/NTT

If you need more material like this, nominate me as github start, to get help the project to gain more visibility and contributions