Data Structures & Algorithms, Level-up for Coding Interviews
·5 mins
Table of Contents
Coding interviews, remain one of the challenging tasks for software developers, this course will teach you what you need to make it through this time.
Course Syllabus #
- Length: 30H
- Multi-select: Arrays, Graphs, Hashing (Unordered Maps Maps Sets), Hashing functions, Heap, Linked Lists, Queues, Stacks, Strings, Tries, Vectors
- Original: https://www.udemy.com/course/cpp-data-structures-algorithms-levelup-prateek-narang/
- Price: 12
- Text: Coding minutes
Welcome to Course! #
- Course Orientation!
- How to do this course?
- C++/Java Code Repository!
- TA Hours/ Doubt Support Guidelines
- Exercise Solutions!
- Q/A Section
Arrays & Vectors #
- Introduction
- Vector STL - Demo
- Vector of Vector - Demo
- How to submit coding exercises?
- A Note on Sorting!
- Helpful Webinars [Optional]
- Pairs
- Pairs Code
- Triplets
- Triplets Code
- Mountain
- Mountain Code
- Longest Band
- Longest Band Code
- Rains
- Rains Code
- Subarray Sort
- Subarray Sort Code
- Minimum Swaps
- Minimum Swaps Code
String Problems #
- Strings Introduction
- Searching Inside String!
- Solution : Search All!
- Space20
- Space20 Implementation
- Tokenisation (using sstream)
- Tokenisation (using strtok)
- Designing our own String Tokeniser!
- String Key Sort
- String Key Sort Implementation
- Check Subsets
- Check Subsets Implementation
- Sort Subsequences
- Sort Subsequences Code
- Solution : String Normalisation
Bit-manipulation Techniques #
- Bitwise Operators
- Left Shift & Right Shift
- Check Odd/Even
- Get ith Bit
- Set ith Bit
- Clear ith Bit
- Update ith Bit
- Clear last i Bits
- Replace Bits Challenge
- Two Power
- Counting Set Bits
- Counting Bits Hack
- Fast Exponentiation
- Problem - Decimal to Binary
Sliding Window Problems #
- Sliding Window Introduction
- Housing (Two Pointer)
- Housing Implementation
- Unique Substring (Hashing)
- Unique Substring Implementation
- String Window
- String Window Implementation
Sorting & Searching #
- Merge Sort
- Merge Sort Code
- Inversion Count
- Inversion Count Code
- Quick Sort
- Quick Sort Code
- Quick Select
- Quick Select Code
- Smallest String
- Smallest String Code
- Sparse Search
- Sparse Search Code
Binary Search #
- Binary Search - Recap!
- Frequency Count
- Frequency Count Code-I
- Frequency Count Code-II
- Rotated Search
- Rotated Search Code
- Finding Roots
- Square Roots Code
- Angry Birds
- Angry Birds Code
- Min Pairs
- Min Pairs Code
- Game of Greed Concept
- Solution - Game of Greed
- Solution : Game of Greed
Recursion Problems #
- Recursion Recap
- Ladders Concept
- Ladders Code
- Subsequence Based Problems
- Subset Sum to X
- Subset Sum to X Code
- Generate Brackets
- Generate Brackets Code
- Smart Keypad
- Smart Keypad Code
- Permutations
- N-Queen Problem
- N-Queen Code
- N-Queen Code
- Sudoku
- Sudoku Code
Linked Lists Problems #
- Linked List Section Introduction
- Warm Up - Creating a Linked List
- Practice - Insertion in the Middle
- Recursive Reverse a Linked List
- Recursively Reverse a Linked List Code
- Iterative Reverse
- Iteratively Reverse a Linked List Code
- K-Reverse a Linked List
- K-Reverse Code
- Merge Two Sorted Linked Lists
- Merge Two Sorted Linked Lists Code
- Runner Technique
- Merge Sort on Linked List
- Merge Sort Linked List Code
Stacks & Queue Problems #
- Stacks, Queue, Deque Recap
- Balanced Paranthesis
- Balanced Paranthesis Code
- Redundant Paranthesis
- Redundant Paranthesis Code
- First Non-Repeating Letter
- First Non-Repeating Code
- Max Subarray (Sliding Window + Deque)
- Simplify Path
- Simplify Path Code
- Solution : Stock Span
Binary Trees Problems #
- Binary Trees Recap
- Build Tree - Boilerplate Code
- Level Order Print
- Level Order Print Code
- Level Order Build
- Level Order Build Code
- Tree Diameter Concept
- Tree Diameter Code
- Tree Diameter Optimised Code
- Replace with Descendant Sum
- Replace with Descendant Sum Code
- Height of Tree
- Height Balanced Tree Concept
- Height Balanced Tree Code
- Max Subset Sum Tree
- Max Subset Sum Tree Code
- Print At LevelK
- Nodes at Distance K
- Nodes at Distance K Code
- Vertical Order Print
- Vertical Order Print Code
BST Problems #
- BST Introduction
- BST Creation Recap
- Minimum Height BST
- Minmum Height BST Code
- Closest in BST
- Closest in BST Code
- Tree to Linked List
- Tree 2 Linked List Code
- Inorder Successor in BST
- Inorder Successor in BST Code
Priority Queue Problems #
- Heaps - Recap!
- Sorting using Heap!
- Finding Cabs
- Finding Cabs Implementation
- Merging Ropes
- Merging Ropes Implementation
- Running Median
- Running Median Implementation
- Merging K-Arrays
- Merge K-Sorted Arrays Code
Hashing Problems #
- Introduction to Hashing
- Triplets in GP | Hashing with Slider
- Triplets in GP Implementation
- Counting Rectangles | Sets
- Counting Rectangles Implementation
- Counting Triangles | Unordered Maps
- Counting Triangles Implementation
- Anagrams in Substrings | Maps
- Anagrams in Substrings Implementation
- Quick Brown Fox | Hashing with DP
- Quick Brown Fox Implementation
Tries & Pattern Matching Problems #
- Tries Introduction
- Prefix Trie Implementation
- Suffix Trie
- Suffix Trie Implementation
- Cute Little Cat (Trie + Hashing)
- Cute Little Cat Implementation
- Biggest XOR (Trie + Bitmasks)
- Biggest XOR Implementation
Graphs Problem Solving #
- Graphs Section Introduction
- Graphs 10 Cool Applications
- Graph Key Terms
- Adjacency List Representation
- Adjacency List Representation with Node Class
- Storing Weighted Graphs
- Breadth First Search (BFS)
- BFS Code
- Shortest Path using BFS
- Shortest Path using BFS Code
- Solution - Snakes & Ladders
- Depth First Search (DFS)
- DFS Code
- Cycle Detection in Undirected Graphs
- Solution - Cycle Detection in Undirected Graph
- Backedge Detection
- Solution - Cycle Detection in Directed Graph
- Dijkshtra’s Algorithm
- Dijkshtra’s Algorithm Code
- Board Game (Trie+Backtracking+Graph)
- Board Game Implementation
- Solution - Shortest Grid Path
- Solution - Largest Island
- Solution - Graph Sequence
Dynamic Programming (1D) #
- Introduction to Dynamic Programming
- A Note about DP
- N-K Ladders (3 Approaches)
- N-K Ladders Code (Top Down)
- N-K Ladders Code (Bottom Up)
- Coin Change
- Coin Change Code
- Cutting Rods Solved!
- Min Array Jumps
- Min Array Jumps Code
- Frog’s Min Cost-I
- Frog’s Min Cost-I Code
- Maximum Non Adjacent Sum
- Maximum Non Adjacent Sum Code
- Longest Increasing Sequence
- Longest Increasing Subsequence Code
- Box Stacking Problem
- Box Stacking Code
- Counting Trees
- Counting Trees Code
- Counting Trees Bottom Up Code
Dynamic Programming (2D) #
- Longest Common Subsequence
- LCS Top Down
- LCS Bottom Up & Print
- Selling Wines
- Selling Wines - Top Down DP Code
- Note about Selling Wines
- Selling Wines - Diagonal Table Filling
- Selling Wines - Bottom Up DP Code
- Counting Subsequences
- Counting Subsequences Recursive
- Counting Subsequences - Table Filling
- Counting Subsequences - Bottom Up
- Knapsack Problem
- Knapsack Problem Recursive
- Knapsack Problem Bottom Up
DSA Project - LRU Cache #
- LRU Cache Introduction
- LRU Data Structure
- LRU Code-I
- LRU Code - II
- LRU Code - III
- LRU Code - IV