This document will cover every topics required in competitive programming. We only assume that you know basic mathematics. The things will eventually get easy as you will move forward in your learning journey.
Do This To Improve Your Programming Logic. These are the steps to follow during a Problem
1. Start with solving easy Problem. First Identify the problem.
2. After solving a Problem go through the solution. And think how can you
Improve it.
3. Go through editorial solution. And see how they solve it.
4. Make notes. Divide into steps and write down. Write down the major steps.
5. Upload your solution in github.
Before you start solving a hard problem do these steps
1. Divide the problem into sub problem.
2. Try to find a brute force solution for the problem.
3. Then find a optimize solution.
- Algorithm visualizer Here
- learn to type type.io
- Type practice speed coder
- To know shortcut check this
You can get started with competitive programming (CP) by following the below roadmap:
This https://cp-algorithms.com/#navigation is the ultimate resource to boost up your programming and mathematics.
Follow the topic sheet here
- C Programming For Beginners - Complete Master Class the C Language learn here
- Code with harry - watch here
- C Programming All-in-One Tutorial Series (10 HOURS!) here\
- patterns in C - Tips and Tricks watch
- Pointers in C / C++ [Full Course] frecodecamp
- What Are Pointers? (C++) javidx
- pointer by low level learning here
- pointer by low level learning watch
- learn c by programiz here
We will use C++ for our problem solving.
courses
YouTube
Books
Practice all this problem one by one to get better and confident in basic problem solving.
- learn stl from geeks for geeks here
- The ultimate guide to learn stl Here
- Code babbar on stl Here
- Cpp nuts Watch
- Must watch watch
- Code With Harry watch very important.
- Luv tutorial watch
- rachit jain tutorial watch
-
(backtracking and some problems)
-
Recursion by Reducible
-
(solve)
-
BigO Notation (read) (Khan Academy) (cheat sheet) (misconceptions)
-
Time Complexity by csdojo
-
Time Complexity and Big O Notation (with notes)
-
Time Complexity by apna college
Array
Note || Read || Video || Problem Set || Problem Set 2 || more problem
String
Note || Read || Video || Problem Set
Linked List
Note Read || Video 1 || Video 2 || Codecamp || computerphile || Problem Set || ProblemSet 2 || Problem Set 3 || Top InterView Coding
Stack
Note || Programiz || geeksforgeeks || Apna College || codewithherry || cs dojo || ProblemSet
Queue
Note || Read || Apna college || cs dojo || ProblemSet || leetCode
Searching Algorithm
Note || Read || Video || video 2 || MIT Lecture || Computerphile || Binary Search|| How Binary Search Wokrs|| ProblemSet
Searching Algorithm ProblemSet
Binary Search || More Binary Search Tree || linear Search || Ternary Search Problem
Sorting Algorithm
Note || Read || Video || FreeCodeCamp || Problem Set || More Problem ||
BFS
Note || Programiz || geeksforgeeks || Read || Read 2 || MIT Lecture || Video || Reducible || WilliamFiset || CodeWithHerry || Problem Set from medium || Code Chef
DFS
Note || Read || WilliamFiset || MIT Lecture || Reducible || Problem Set
Divide and Conquer Algorithm
Note || read || GeeksForGeeks || Khan Academy || MIT lecture || V. Anton Spraul || codechef || ProblemSet || leetCode
Tree Data Structure
Note || Programiz || geeksforgeeks || cs dojo || freecodecamp || apna college || code with herry || more video || Ultimate trees guide geeks for geeks || ProblemSet more problem || more problem
Graph Data Structure
Note || must read || Programiz || geeksforgeeks || Intro to graph|| complete graph by geeks || code with harry || graph playlist || free code camp intro || graph by luv || Advance graph by free code camp || 100+ problems
Hash Table
Note || programiz || geeksforgeeks || read || cj dojo || free code camp || jacob sorber || caleb curry || MIT lecture || MIT hashing || hash table || WilliamFiset || Hash tables & probability || 75 hashing problem || leetcode
Set
Note || Read || sets intro || Video || freecodecamp || caleb || sets and maps || Bari || love babbar || luv || sets || ProblemSet
Heap
Note || geeks for geeks || programiz || read || Heap palylist || Watch || Bari || free code camp || 26 problem on heap || leetcode
Greedy Mehtodology
Note || Programiz || geeks for geeks || wiki || hackerearth || brilliant || geeks for geeks palylist || freecodecamp || tech with tim || MIT || bari || MIT || ProblemSet || more
Recursion
Note || geeks for geeks || read || Kunal || free code camp || computerphile || reducible || leetCode
Backtracking Algorithm
Note Programiz || geeks for geeks || free code camp || Thnik like a programmer || kunal palylist || back into swe || apna college || rat in maze || code chef || free code camp || 30+ problems
Video
Books
Website
Merge Sort Algorithm
Quicksort Algorithm
Kruskal’s Algorithm
Floyd Warshall Algorithm
Dijkstra’s Algorithm
Bellman Ford Algorithm
Kadane’s Algorithm
Lee Algorithm
Flood Fill Algorithm
Floyd’s Cycle Detection Algorithm
Union Find Algorithm
Topological Sort Algorithm
KMP Algorithm
Insertion Sort Algorithm
Selection Sort Algorithm
Counting Sort Algorithm
Heap Sort Algorithm
Kahn’s Topological Sort Algorithm
Huffman Coding Compression Algorithm
Quickselect Algorithm
Boyer–Moore Majority Vote Algorithm
Euclid’s Algorithm
String Manipulation
Bit Manipulation
- Algorithm by MIT Playlist
- Advance Algorithm by MIT Playlist
- Advance Algorithm by MIT spring playlist
- Advance data structure by MIT playlist
- Design and analysis of Algorithm by MIT playlist
- Strategies for tracking hard problem here
- khan academy
-
Sorting (visualize) (intution) (read) (Sorting in C++) (Implementation) (Problems) Read only Bubble, Merge, Counting sort and sorting in O(n log n) time.
-
Searching (visualize) (read and solve) (searching in C++)
-
An amazing playlist of searching and sorting.
-
Sweep Line algorithm (topcoder)
-
Tasks and Deadlines problem (read)
- Highly recommended watch (1 and 2) and read.
- Intution (read all parts).
- Longest increasing subsequence problem (watch).
- Paths on a grid problem (watch).
- Knapsack Problem (watch this or this)
- Subset sum problem (watch)
- Watch this full playlist by Geeksforgeeks.
- Dynamic Programming - Learn to Solve Algorithmic Problems & Coding Challenges - watch
- Dynamic Programming - watch
- 5 Simple Steps for Solving Dynamic Programming Problems - watch
- jennys lecture on dynamic programming - watch
- Baris lecture - Watch
- Mit dynamic programming lecture - here
- Dynamic programming for beginners - Here
- CS50 dynamic programming - here
- Dynamic programming by cs dojo - here
- Deynamic Programming Problem set Here
- 50 Dynamic Programming Problem
- 10 dynamic problems here
- Dynamic programming problem form codeforce here
- 100 Deynamic programming problems here
-
Game Theory
-
Advanced String Algorithms, Tries
-
Segment Trees, Fenwick Trees
-
Suffix Tree, Suffix Array
-
Heavy Light Decomposition
-
Disjoint Set, Graph Coloring, Network Flow
-
Sqrt Decomposition
- Basics of graph. Watch here or here or from Humblefool’s mycodeschool(part basics and properties {highly recommended})
- Graph representation using edge list, adjacency matrix, adjacency lists and incidence matrix.
- Graph Transversal (BFS & DFS watch, visualize and implementation BFS & DFS). Problems on BFS & DFS.
- Strongly Connected Components
- Biconnectivity, Tarzan’s algorithm(visualization) for finding bridges.
- Dijkstra’s Algorithm (watch, visualize and implement example)
- Bellman Ford algorithm (watch, visualize with example)
- Floyd–Warshall Algorithm (watch visualize (another) and implement and on undirected path.
- Directed Acyclic Graphs (Topological Sort and implementation) Dynamic Programming for shortest path.
- Minimum Spanning Trees (watch). Prim and Kruskal Visualization
- Euler’s tour algorithm.
- Maximum flow using Ford Fulkerson Method.
- Bit-Parallel Algorithms (Hamming Distances), (Counting Subgrids)
- Amortized Analysis
- Ternary Search (read and implement)
- Introduction (mycodeschool)
- Tree transversal (Binary tree transversal) (DP) (wiki)
- Diameter of the binary tree (in O(n) time) (watch)
- Lowest common ancestor in tree on O(1). (watch)
- Centroid decomposition (watch) (read) (problems)
- Heavy light decomposition (advanced) (read)
- Strong Connectivity - Kosaraju’s Algorithm (wiki), 2SAT Problem (watch approx. 2hr)
- Complete Paths - Eulerian Paths (basics) (wiki), Hamiltonian Path (basics) (wiki), Applications - De Bruijn sequence(watch), Knight’s tour(numberphile)
- Maximum Flows - (MIT) (Ford–Fulkerson Algorithm)
-
A repo about palces to find and practice problems. Find it here
-
The Ultimate Problem Solving Training Excel Sheet here
-
Problem Sheet here
-
competitive programming library here
-
Problem set based on different area. here
-
50 Coding Interview Questions - https://www.byte-by-byte.com/wp-content/uploads/2019/01/50-Coding-Interview-Questions.pdf - "In this guide, I’ve organized all of the interview questions we’ve ever covered on Byte by Byte into a convenient PDF for you to reference whenever you like. Over the years, I’ve been careful to select only problems that are directly relevant to your interviews. This guide combines them all in one place and is completely free for you to download."
-
500 Data Structures and Algorithms practice problems and their solutions. Here
-
Epic List of Interview Questions - http://katemats.com/interview-questions/ - a list of software engineer skills or areas that can be tested and evaluated in an interview context
-
MaximAbramchuck/awesome-interview-questions - https://github.com/MaximAbramchuck/awesome-interview-questions - A curated awesome list of lists of interview questions.
-
Daily Coding Questions - https://dailycodingproblem.com/ - Coding question emailed to you everyday for free. If you want the answer emailed to you thefollowing day it's $8/month.
-
Daily Coding Problem: Get exceptionally good at coding interviews by solving one problem every day here
-
Fundamentals (Binary Exponentiation, Euclidean Algorithm, etc)
-
Algorithms related to prime numbers (Sieve of Eratosthenes, etc)
-
Number Theory (Euler's totient, etc)
-
Modular Arithmetic (Modulo inverse, Chinese remainder theorem, etc)
-
Number Systems (Balanced Ternary, Gray code, etc)
-
Linear Algebra
-
Geometry
-
Combinatorics
-
Numerical Methods
-
Misc (Fast Fourier transform, Polynomials, etc)
-
Read whole book ‘Elementary Number Theory with Programming’.
-
Watch this if you have less time. A video by O’Reilly.
-
Maths for Programmers Tutorial - Full Course on Sets and Logic Watch
-
These Maths Topics Will Improve your Coding Performance - here
-
Bangla tutorial on discrete math Here
-
discrete math by trefor Watch
-
discrete lecture - here
-
discrete math by iit - here
-
Pre calculus - here
-
3blue1brown trig - here
-
pre cal by organic chemistry - here
-
khan academy watch
-
Eddie woo pre calc watch
-
leonard pre cal watch
-
Must watch Trigonometry Concepts - Don't Memorize! Visualize! here
-
Geometry - watch
-
Essence of linear algebra watch
-
Essence of calculus watch
-
calculus 1 by leonard watch
-
calculus 2 by leonard watch
-
calculus 3 by leonard watch
-
calculus 1 by trefor watch
-
calculus 2 by trefor watch
-
calculus 3 by trefor watch
-
calculus 4 by trefor watch
- 30 Days logic Build Challenge here
**** The Art of Computer Programming **** (must read)
Books On competitive_programming
- Competitive Programmer’s Handbook
- Competitive Programming 2 book
- Competitive Programming
- Programming Challenges: The Programming Contest Training Manualhere
- Problem Solving in Data Structures & Algorithms Using C++: Programming Interview Guide here
Books on coding
- Code: The Hidden Language of Computer Hardware and Software here
- Clean Code: A Handbook of Agile Software Craftsmanship here
- Types and Programming Languages (The MIT Press)here
- The Pragmatic Programmer: Your Journey to Mastery here
- Think Like a Programmer: An Introduction to Creative Problem Solving here
Books on Data structures and Algorithms
- Algorithms here
- Algorithmic Geometry here
- The Algorithm Design Manual (Texts in Computer Science) here
- Handbook of data structures and applications here
- Advanced Data Structures here
- First Course in Algorithms Through Puzzles here
- Learning Algorithms Through Programming and Puzzle Solving here
- Coding Theory - Algorithms, Architectures, and Applications here
- Grokking Algorithms here
C++
- C++ Crash Course: A Fast-Paced Introduction here
- C++ Primer here
- Effective C++ Digital Collection 140 Ways to Improve Your Programming here
- C++ Concurrency in Action here
- C++ Templates: The Complete Guide here
- C++: The Ultimate Guide to Master C Programming Fast
- Effective STL [C++ standard library] here
- Optimized C++: Proven Techniques for Heightened Performance Here
- C++ Programming: An Object-Oriented Approach here
- Functional Programming in C++ here
- Object - Oriented Programming C++ Simplified
- Interfacing with C++: programming real-world applications
- common Interview Questions solved by freecodecamp Watch
- tips to solve dynamic programming in Interview here
- Coding Interview, 1000 Questions & Answers: Including Examination of C#, C++, HTML, CSS, JQuery, JavaScript, JAVA, Linux, PHP, MySQL, Python, Visual Basic Courses
- Are you smart enough to work at Google?: trick questions, zen-like riddles, insanely difficult puzzles, and other devious interviewing techniques you ... know to get a job anywhere in the new economy here
- Cracking the Code to a Successful Interview: 15 Insider Secrets from a Top-Level Recruiter
-
exercism - https://exercism.io/ - Level up your programming skills with 2,629 exercises across 48 languages, and insightful discussion with our dedicated team of welcoming mentors. Exercism is 100% free forever.
-
List of interview probelm here
-
Codility - https://codility.com/programmers/ - Become a better programmer. Develop your coding skills with our lessons. Take part in our challenges.
-
Codility Solutions - https://www.martinkysel.com/codility-solutions/ - One engineer's solutions to the codility.com problem sets.
-
Testdome - https://www.testdome.com/Tests - Get certified and prove your knowledge to potential employers. Score well on one of our public tests, and you will get a free certificate of achievement.
-
Cmoputational Thinking - watch
-
Algorithmic art - watch
Video
Books
Website