siambhuiyan / RoadToBetterProblemSolver

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Road To A Better Problem Solver

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.

Method To Solve A Problem

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.

Tools

Introduction

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

Place To Practice Code

Learn C

  • 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

Programming Language

We will use C++ for our problem solving.

Resources To Learn C++

courses

YouTube

Books

Problem Set For C++

Practice all this problem one by one to get better and confident in basic problem solving.

C++ STL

  • 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

Object Oriented Programming

  • oop by freecodecamp watch
  • oop by code beauty watch
  • oop by geeks for geeks read
  • oop by edx - learn

Programming Techniques

Time Complexity

Data Structure

Data structure roadmap

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

Data Structure Resources

Video

Books

Website

Algorithm

Merge Sort Algorithm

Note Aritcle Video ProblemSet

Quicksort Algorithm

Note Aritcle Video ProblemSet

Kruskal’s Algorithm

Note Aritcle Video ProblemSet

Floyd Warshall Algorithm

Note Aritcle Video ProblemSet

Dijkstra’s Algorithm

Note Aritcle Video ProblemSet

Bellman Ford Algorithm

Note Aritcle Video ProblemSet

Kadane’s Algorithm

Note Aritcle Video ProblemSet

Lee Algorithm

Note Aritcle Video ProblemSet

Flood Fill Algorithm

Note Aritcle Video ProblemSet

Floyd’s Cycle Detection Algorithm

Note Aritcle Video ProblemSet

Union Find Algorithm

Note Aritcle Video ProblemSet

Topological Sort Algorithm

Note Aritcle Video ProblemSet

KMP Algorithm

Note Aritcle Video ProblemSet

Insertion Sort Algorithm

Note Aritcle Video ProblemSet

Selection Sort Algorithm

Note Aritcle Video ProblemSet

Counting Sort Algorithm

Note Aritcle Video ProblemSet

Heap Sort Algorithm

Note Aritcle Video ProblemSet

Kahn’s Topological Sort Algorithm

Note Aritcle Video ProblemSet

Huffman Coding Compression Algorithm

Note Aritcle Video ProblemSet

Quickselect Algorithm

Note Aritcle Video ProblemSet

Boyer–Moore Majority Vote Algorithm

Note Aritcle Video ProblemSet

Euclid’s Algorithm

Note Aritcle Video ProblemSet

String Manipulation

Note Aritcle Video ProblemSet

Bit Manipulation

Note Aritcle Video ProblemSet

Algorithm Resources

Sorting and Searching

Dynamic Programming

  • 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

Problem On Dynamic Programming

Advance DSA

  • 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

Graph Algorithm

Algorithms Design Topics

Trees Algorithm

Advance Graph Algorithms

More Problem

Mathematics

  • 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.

  • Game theory intro. NIM game. Spragur-Grundy theorem.(watch)

  • Maths for Programmers Tutorial - Full Course on Sets and Logic Watch

  • These Maths Topics Will Improve your Coding Performance - here

  • Mathmetics for computer sicence

  • linear algebra

  • college algebra

  • Statistics

  • Bangla tutorial on discrete math Here

  • Neso Academy discrete

  • 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

Build Logic

  • 30 Days logic Build Challenge here

Books

**** The Art of Computer Programming **** (must read)

Books On competitive_programming

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++

Interview Questions

  • 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

Miscellaneous

Data Structure Resources

Video

Books

Website

About