# Algorithms and Data Structures

Below is your roadmap to master Data Structures and Algorithms, and become a great Problem Solver. Most textbooks do a phenomenal job at giving you great theoretical knowledge but often lack implementation details and hands-on coding experiences. TheAlgorist.com will bridge that gap. What makes this course different is our pragmatic approach to give you an in-depth knowledge on practical applications of each and every data structure and algorithm by solving real-world problems.This course will also help you with preparing for Coding Interviews at all kinds of tech companies including big tech companies and tech start-ups.

### Browse by Topic

Free / Preview Chapters Dynamic Programming Graph Theory Backtracking Binary Search Tree Sliding Window Union Find Heap Shortest Path Algorithms Bit Manipulation Linked List Applications Sweep Line Technique Interesting Concepts Trie Reservoir Sampling Concurrent Programming Video Lessons

### Sliding Window

Core Concept

Minimum Window

Substring
Grumpy Shopkeeper
Longest Substring w/ Atmost

Two Distinct Characters
Longest Substring w/ Atmost

K Distinct Characters
Longest Substring

Without Repeating

Characters
Find All Anagrams
Substring

w/ Concatenation

of All Words
Repeated DNA Sequences
Limitations

### Dynamic Programming:

Unbounded

Knapsack Concept

Core Concept
Coin Change:

Minimum no. of Coins
Coin Change: Total

Combinations Possible
Combination Sum
Combination Sum Count

### Dynamic Programming:

State Machine Approach

Core Concept
Stock Trading

w/ Cooldown
Max Profit w/ Unlimited

Stock Trade Transactions
Stock Trading w/

Transaction Fee
Max Profit w/ at most

2 Stock Trade Transactions
Max Profit w/ at most

K Stock Trade Transactions
Max Profit w/ at most

1 Stock Trade Transaction

### Dynamic Programming:

Longest

Increasing Subsequence

Core Concept
Box Stacking
Russian Doll Envelopes
Largest Divisible Subset
Longest String Chain
Best Team with No Conflict
Longest Bitonic

Subsequence

### Dynamic Programming:

All possible Cuts

in all possible Intervals

for the Last Operation

Core Concept
Matrix Chain Multiplication

or, Parenthesization
Optimal Binary Search Tree
Minimum Palindrome

Partitioning
Burst Balloons

### Dynamic Programming:

Kadane's Algorithm

Core Concept
Maximum Product

Subarray
Best Time to Buy

& Sell Stock

### Dynamic Programming:

2-Strings Problems

Core Concept
Longest Common

Substring
Longest Common

Subsequence
Shortest Common

Supersequence
Interleaving String
Edit Distance

### Dynamic Programming:

1-String Problem

Core Concept
Palindrome
Longest Palindromic

Substring
Longest Palindromic

Subsequence
Minimum Palindrome

Partitioning
Minimum Palindromic

Insertion

### Dynamic Programming:

Other Techniques

Optimal Path(s) to Target
Minimum Cost Tickets
Counting DP
Unique Paths
Unique Paths Without

Obstructions
Decision Making Approach
House Robber
Maximal Square

### Backtracking Algorithm - II:

Combinatorics

Power Set
Power Set w/ Duplicates
Permutations
Palindrome Permutation
Permutations

w/ Divisibility
Permutations

w/ Duplicates
Combinations
Combination Sum
Combination Sum 2
Combination Sum 3

### Job Scheduling Problems

Sequential Job Scheduling
Parallel Job Scheduling
Parallel Job Scheduling

w/ Relative Deadlines

### Union-Find or Disjoint Set Union

Fundamentals
Longest Consecutive

Sequence
Number of Islands
Accounts Merge
Redundant Connection
Number of Provinces
Valid Tree

### Linked List ^{NEW}

Representation of Linked List Linked List Complexity Linked List Operations Traverse a Linked List Insert Elements to a Linked List Delete from a Linked List Search an Element on a Linked List Sort Elements of a Linked List Deleting a Node from a Singly Linked List The "Runner" Technique Types of Linked List Singly Linked List Circular Linked List Find middle element of LinkedList Remove Dups Return Kth to Last Delete Middle Node Linked ListPartition Linked List Intersection Loop Detection