Урок 1.
00:08:22
Curriculum Walkthrough
Урок 2.
00:03:27
What is a data structure?
Урок 3.
00:03:54
What is an algorithm?
Урок 4.
00:03:41
Why are Data Structures and Algorithms important?
Урок 5.
00:03:23
Types of Data Structures
Урок 6.
00:04:01
Types of Algorithms
Урок 7.
00:01:06
Goals : what you will learn by the end of this section
Урок 8.
00:05:01
What is Recursion?
Урок 9.
00:03:22
Why do we need Recursion?
Урок 10.
00:09:16
The Logic Behind Recursion
Урок 11.
00:04:14
Recursive vs Iterative Solution
Урок 12.
00:06:22
When to Use/Avoid Recursion?
Урок 13.
00:13:43
How to Write Recursion in 3 Steps?
Урок 14.
00:09:38
Fibonacci Series using Recursion
Урок 15.
00:08:51
Question 1 - Sum of Digits
Урок 16.
00:05:56
Question 2 - Power
Урок 17.
00:06:41
Question 3 - GCD
Урок 18.
00:08:17
Question 4 - Decimal to Binary
Урок 19.
00:03:21
What is Big O?
Урок 20.
00:08:03
Big O Notations (Big O, Big Omega, Big Theta)
Урок 21.
00:10:08
Most Common Time Complexities
Урок 22.
00:02:42
Space Complexity
Урок 23.
00:03:56
Drop Constants and Non Dominant Terms
Урок 24.
00:02:28
Addition vs Multiplication
Урок 25.
00:04:49
How to Measure the Code using Big O?
Урок 26.
00:07:20
How to Measure Recursive Algorithm?
Урок 27.
00:04:08
How to Measure Recursive Algorithm with Multiple Calls?
Урок 28.
00:05:47
Question 1 - Time Complexity of Method that returns Sum and Product of Array
Урок 29.
00:05:51
Question 2 - Time Complexity of Print Pairs Method
Урок 30.
00:04:32
Question 3 - Time Complexity of Print Unordered Pairs Method
Урок 31.
00:02:15
Question 4 - Find Time Complexity for Given Method
Урок 32.
00:01:36
Question 5 - Find Time Complexity for Given Method
Урок 33.
00:06:05
Question 6 - Time Complexity of Reverse Array Function
Урок 34.
00:03:24
Question 7 - Equivalent to O(N)
Урок 35.
00:02:52
Question 8 - Time Complexity of Factorial
Урок 36.
00:02:56
Question 9 - Time Complexity of Fibonacci
Урок 37.
00:03:00
Question 10 - Time Complexity Powers Of 2
Урок 38.
00:07:58
What is an Array?
Урок 39.
00:06:52
Types of Arrays
Урок 40.
00:03:53
Arrays in Memory
Урок 41.
00:09:06
Create an Array
Урок 42.
00:11:37
Insertion in Array
Урок 43.
00:05:13
Accessing Elements in Array
Урок 44.
00:07:28
Array Traversal
Урок 45.
00:07:53
Search for Array Element
Урок 46.
00:05:58
Delete Array Element
Урок 47.
00:04:21
Time and Space Complexity of 1D Arrays
Урок 48.
00:11:06
Create Two Dimensional Array
Урок 49.
00:10:39
Insertion - Two Dimensional Array
Урок 50.
00:07:17
Accessing Two Dimensional Array Element
Урок 51.
00:07:22
Traverse Two Dimensional Array
Урок 52.
00:08:15
Searching Two Dimensional Array
Урок 53.
00:06:38
Delete Two Dimensional Array Element
Урок 54.
00:04:07
Time and Space Complexity of 2D Arrays
Урок 55.
00:02:38
When to Use/Avoid Arrays
Урок 56.
00:02:52
Goals - what you will make by the end of this section
Урок 57.
00:07:09
Calculate Average Temperature
Урок 58.
00:06:44
Find the Days Above Average Temperature
Урок 59.
00:00:43
Section Goals
Урок 60.
00:06:57
Solution - Missing Number
Урок 61.
00:09:12
Solution - Pairs
Урок 62.
00:05:27
Solution - Finding a Number in an Array
Урок 63.
00:06:06
Solution - Max Product of Two Integers
Урок 64.
00:05:16
Solution - IsUnique / Contains Duplicate - LeetCode 217
Урок 65.
00:08:35
Solution - Permutation
Урок 66.
00:12:30
Rotate Matrix / Image - LeetCode 48
Урок 67.
00:05:58
What is a Linked List?
Урок 68.
00:03:50
Linked List vs Array
Урок 69.
00:10:54
Types of Linked List
Урок 70.
00:04:02
Linked List in the Memory
Урок 71.
00:09:54
Creation of Singly Linked List
Урок 72.
00:03:54
Insertion in Singly Linked List in Memory
Урок 73.
00:08:03
Insertion Algorithm in Singly Linked List
Урок 74.
00:14:56
Insertion Method in Singly Linked List
Урок 75.
00:09:49
Traversal of Singly Linked List
Урок 76.
00:08:50
Searching in Singly Linked List
Урок 77.
00:09:38
Deletion of a Node from Singly Linked List
Урок 78.
00:15:39
Deletion Method in Singly Linked List
Урок 79.
00:05:57
Deletion of Entire Singly Linked List
Урок 80.
00:04:06
Time and Space Complexity of Singly Linked List
Урок 81.
00:12:59
Create Circular Singly Linked List
Урок 82.
00:07:31
Insertion in Circular Singly Linked List
Урок 83.
00:04:49
Insertion Algorithm in Circular Singly Linked List
Урок 84.
00:12:00
Insertion Method Circular Singly Linked List
Урок 85.
00:09:58
Traversal of Circular Singly Linked List
Урок 86.
00:09:49
Searching a Node in Circular Singly Linked List
Урок 87.
00:08:39
Deletion of a Node from Circular Singly List
Урок 88.
00:05:20
Deletion Algorithm in Circular Singly Linked List
Урок 89.
00:11:21
Deletion Method in Circular Singly Linked List
Урок 90.
00:06:32
Delete Entire Circular Singly Linked List
Урок 91.
00:05:33
Time and Space Complexity of Circular Singly Linked List
Урок 92.
00:13:46
Create Doubly Linked List
Урок 93.
00:09:55
Insertion Doubly Linked List
Урок 94.
00:06:30
Insertion Algorithm Doubly Linked List
Урок 95.
00:14:55
Insertion Method Doubly Linked List
Урок 96.
00:08:36
Traversal of Doubly Linked List
Урок 97.
00:08:22
Reverse Traversal of Doubly Linked List
Урок 98.
00:08:56
Searching for a Node in Doubly Linked List
Урок 99.
00:08:34
Deletion of a Node in Doubly Linked List
Урок 100.
00:06:09
Deletion Algorithm Doubly Linked List
Урок 101.
00:13:45
Deletion Method in Doubly Linked List
Урок 102.
00:07:25
Delete Entire Doubly Linked List
Урок 103.
00:05:28
Time and Space Complexity of Doubly Linked List
Урок 104.
00:12:22
Create Doubly Linked List
Урок 105.
00:10:30
Insertion Circular Doubly Linked List
Урок 106.
00:06:59
Insertion Algorithm Circular Doubly Linked List
Урок 107.
00:13:55
Insertion Method Circular Doubly Linked List
Урок 108.
00:08:32
Traversal of Circular Doubly Linked List
Урок 109.
00:08:18
Reverse Traversal of Circular Doubly Linked List
Урок 110.
00:09:00
Search for a Node in Circular Doubly Linked List
Урок 111.
00:10:54
Deletion in Circular Doubly Linked List
Урок 112.
00:06:48
Deletion Algorithm in Circular Doubly Linked List
Урок 113.
00:11:52
Deletion Method in Circular Doubly Linked List
Урок 114.
00:07:41
Delete Entire Circular Doubly Linked List
Урок 115.
00:04:35
Time and Space Complexity of Circular Doubly Linked List
Урок 116.
00:07:13
Time Complexity of Array vs Linked List
Урок 117.
00:10:19
Linked List Class
Урок 118.
00:10:52
Solution - Remove Dups
Урок 119.
00:09:20
Solution - Return Nth to Last
Урок 120.
00:09:37
Solution - Partition
Урок 121.
00:10:52
Solution - Sum Lists
Урок 122.
00:13:21
Solution - Intersection
Урок 123.
00:05:28
What and Why of Stack?
Урок 124.
00:06:33
Stack Operations
Урок 125.
00:01:33
Stack using Array vs Linked List
Урок 126.
00:08:23
Stack Operations using Array (Create, isEmpty, isFull)
Урок 127.
00:12:41
Stack Operations using Array (Push, Pop, Peek, Delete)
Урок 128.
00:02:49
Time and Space Complexity of Stack using Array
Урок 129.
00:06:47
Stack Operations using Linked List
Урок 130.
00:18:12
Stack methods - Push , Pop, Peek, Delete and isEmpty using Linked List
Урок 131.
00:03:22
Time and Space Complexity of Stack using Linked List
Урок 132.
00:02:15
When to Use/Avoid Stack
Урок 133.
00:06:33
What is a Queue?
Урок 134.
00:00:00
Linear Queue Operations using Array
Урок 135.
00:14:45
Create, isFull, isEmpty and enQueue methods using Linear Queue Array
Урок 136.
00:10:46
Dequeue, Peek and Delete Methods using Linear Queue Array
Урок 137.
00:03:49
Time and Space Complexity of Linear Queue using Array
Урок 138.
00:04:37
Why Circular Queue?
Урок 139.
00:08:00
Circular Queue Operations using Array
Урок 140.
00:18:20
Create, Enqueue, isFull and isEmpty Methods in Circular Queue using Array
Урок 141.
00:12:22
Dequeue, Peek and Delete Methods in Circular Queue using Array
Урок 142.
00:03:56
Time and Space Complexity of Circular Queue using Array
Урок 143.
00:07:54
Queue Operations using Linked List
Урок 144.
00:10:45
Create, Enqueue and isEmpty Methods in Queue using Linked List
Урок 145.
00:10:28
Dequeue, Peek and Delete Methods in Queue using Linked List
Урок 146.
00:03:04
Time and Space Complexity of Queue using Linked List
Урок 147.
00:02:28
Array vs Linked List Implementation
Урок 148.
00:01:57
When to Use/Avoid Queue?
Урок 149.
00:01:04
Goals
Урок 150.
00:23:49
Solution - Three in One
Урок 151.
00:12:48
Solution - Stack Minimum
Урок 152.
00:14:29
Solution Part 1 - Stack of Plates
Урок 153.
00:10:57
Solution Part 2 - Stack of Plates
Урок 154.
00:08:11
Solution Part 3 - Follow UP
Урок 155.
00:11:50
Solution - Queue via Stacks
Урок 156.
00:24:49
Solution - Animal Shelter
Урок 157.
00:07:26
What is a Tree?
Урок 158.
00:02:41
Why Tree?
Урок 159.
00:05:17
Tree Terminology
Урок 160.
00:09:44
Creating a Basic Tree in Java
Урок 161.
00:03:10
What is A Binary Tree?
Урок 162.
00:03:50
Types of Binary Tree
Урок 163.
00:07:35
Binary Tree Representation
Урок 164.
00:06:10
Create Binary Tree using Linked List
Урок 165.
00:12:02
PreOrder Traversal in Binary Tree using Linked List
Урок 166.
00:08:49
InOrder Traversal in Binary Tree using Linked List
Урок 167.
00:07:03
PostOrder Traversal in Binary Tree using Linked List
Урок 168.
00:08:48
LevelOrder Traversal in Binary Tree using Linked List
Урок 169.
00:09:31
Search Method in Binary Tree (Linked List)
Урок 170.
00:12:37
Insert Method in Binary Tree (Linked List)
Урок 171.
00:20:30
Delete a Node in Binary Tree (Linked List)
Урок 172.
00:02:40
Delet Entire Binary Tree (Linked List)
Урок 173.
00:07:28
Create Binary Tree (Array)
Урок 174.
00:07:57
Insert Method Binary Tree (Array)
Урок 175.
00:07:26
PreOrder Traversal Binary Tree (Array)
Урок 176.
00:06:25
InOrder Traversal Binary Tree (Array)
Урок 177.
00:05:24
PostOrder Traversal Binary Tree (Array)
Урок 178.
00:05:46
levelOrder Traversal Binary Tree (Array)
Урок 179.
00:07:07
Search Method Binary Tree (Array)
Урок 180.
00:06:33
Delete a Node Binary Tree (Array)
Урок 181.
00:03:07
Delete Binary Tree (Array)
Урок 182.
00:06:01
Array vs Linked List in Binary Tree Implementation
Урок 183.
00:03:29
What is a Binary Search Tree? Why do we need it?
Урок 184.
00:04:38
Create Binary Search Tree
Урок 185.
00:12:07
Insert a Node to Binary Search Tree
Урок 186.
00:04:45
PreOrder Traversal Binary Search Tree
Урок 187.
00:04:10
InOrder Traversal Binary Search Tree
Урок 188.
00:03:41
PostOrder Traversal Binary Search Tree
Урок 189.
00:05:12
Level Order Traversal Binary Search Tree
Урок 190.
00:07:42
Search in Binary Search Tree
Урок 191.
00:17:19
Delete a Node in Binary Search Tree
Урок 192.
00:02:51
Delete BST
Урок 193.
00:03:37
Time and Space Complexity of BST
Урок 194.
00:07:24
What is an AVL Tree?
Урок 195.
00:04:00
Why Do We Need AVL Tree?
Урок 196.
00:12:19
Common Operations on AVL Tree
Урок 197.
00:13:33
Insert a Node in AVL (Left Left Condition)
Урок 198.
00:08:31
Insert a Node in AVL (Left Right Condition)
Урок 199.
00:08:01
Insert a Node in AVL (Right Right Condition)
Урок 200.
00:06:37
Insert a Node in AVL (Right Left Condition)
Урок 201.
00:14:27
Insert a Node in AVL (All Together)
Урок 202.
00:21:06
Insert a Node in AVL (Method in Practice)
Урок 203.
00:10:05
Delete a Node from AVL (LL, LR, RR, RR)
Урок 204.
00:07:05
Delete a Node from ALL (All Together)
Урок 205.
00:13:42
Delete a Node from AVL (Method in practice)
Урок 206.
00:02:11
Delete Entire AVL Tree
Урок 207.
00:03:03
Time and Space Complexity of AVL
Урок 208.
00:02:57
Binary Search Tree vs AVL
Урок 209.
00:07:40
What is Binary Heap? Why do we need Binary Heap?
Урок 210.
00:18:48
Common Operations on Binary Heap
Урок 211.
00:14:46
Insert a Node in Binary Heap
Урок 212.
00:19:20
Extract a Node from Binary Heap
Урок 213.
00:02:46
Delete Entire Binary Heap
Урок 214.
00:05:31
Time and Space Complexity of Binary Heap
Урок 215.
00:10:58
What is a Trie? Why we need Trie?
Урок 216.
00:06:24
Common Operations on a Trie (Creation)
Урок 217.
00:14:42
Insert a String in Trie
Урок 218.
00:13:01
Search for a String in Trie
Урок 219.
00:16:58
Delete a String from Trie
Урок 220.
00:02:15
Practical Uses of Trie
Урок 221.
00:05:38
What is Hashing? Why we need it?
Урок 222.
00:04:46
Hashing Terminology
Урок 223.
00:09:47
Hash Functions
Урок 224.
00:16:52
Types of Collision Resolution Techniques - Direct Chaining (Insert)
Урок 225.
00:07:29
Direct Chaining Implementation - (Search, Delete)
Урок 226.
00:04:41
Hash Table is Full
Урок 227.
00:17:45
Collision Resolution Technique - Linear Probing (Insert)
Урок 228.
00:08:39
Collision Resolution Technique - Linear Probing (Search, Delete)
Урок 229.
00:09:12
Collision Resolution Technique - Open Addressing : Quadratic Probing
Урок 230.
00:13:50
Collision Resolution Technique - Open Addressing : Double Hashing
Урок 231.
00:05:11
Pros and Cons of Resolution Techniques
Урок 232.
00:04:18
Practical Use of Hashing
Урок 233.
00:02:10
Hashing vs Other DS
Урок 234.
00:03:00
What is Sorting?
Урок 235.
00:06:52
Types of Sorting
Урок 236.
00:05:10
Sorting Terminology
Урок 237.
00:15:45
Bubble Sort
Урок 238.
00:11:35
Selection Sort
Урок 239.
00:13:51
Insertion Sort
Урок 240.
00:21:11
Bucket Sort
Урок 241.
00:15:49
Merge Sort
Урок 242.
00:22:11
Quick Sort
Урок 243.
00:18:21
Heap Sort
Урок 244.
00:01:30
Comparison of Sorting Algorithms
Урок 245.
00:01:45
Introduction To Search Algorithms
Урок 246.
00:04:01
Linear Search
Урок 247.
00:07:12
Linear Search in Java
Урок 248.
00:03:04
Binary Search
Урок 249.
00:13:04
Binary Search in Java
Урок 250.
00:05:15
Time Complexity of Binary Search
Урок 251.
00:01:41
What you will learn
Урок 252.
00:04:50
What is a Graph? Why do we need Graph
Урок 253.
00:05:06
Graph Terminology
Урок 254.
00:05:47
Types of Graph
Урок 255.
00:09:55
Graph Representation
Урок 256.
00:12:57
Graph in Java using Adjacency Matrix
Урок 257.
00:09:51
Graph in Java using Adjacency List
Урок 258.
00:10:37
Breadth First Search Algorithm (BFS)
Урок 259.
00:11:22
Breadth First Search Algorithm (BFS) in Java - Adjacency Matrix
Урок 260.
00:06:30
Breadth First Search Algorithm (BFS) in Java - Adjacency List
Урок 261.
00:03:25
Time Complexity of Breadth First Search (BFS) Algorithm
Урок 262.
00:07:23
Depth First Search (DFS) Algorithm
Урок 263.
00:06:35
Depth First Search (DFS) Algorithm in Java - Adjacency List
Урок 264.
00:06:35
Depth First Search (DFS) Algorithm in Java - Adjacency Matrix
Урок 265.
00:03:08
Time Complexity of Depth First Search (DFS) Algorithm
Урок 266.
00:04:33
BFS Traversal vs DFS Traversal
Урок 267.
00:02:57
What is Topological Sort?
Урок 268.
00:09:14
Topological Sort Algorithm
Урок 269.
00:10:56
Topological Sort using Adjacency List
Урок 270.
00:07:24
Topological Sort using Adjacency Matrix
Урок 271.
00:03:14
Time and Space Complexity of Topological Sort
Урок 272.
00:04:46
What is Single Source Shortest Path Problem?
Урок 273.
00:07:04
Breadth First Search (BFS) for Single Source Shortest Path Problem (SSSPP)
Урок 274.
00:11:09
BFS for SSSPP in Java using Adjacency List
Урок 275.
00:07:25
BFS for SSSPP in Java using Adjacency Matrix
Урок 276.
00:02:51
Time and Space Complexity of BFS for SSSPP
Урок 277.
00:03:38
Why does BFS not work with Weighted Graph?
Урок 278.
00:02:16
Why does DFS not work for SSSP?
Урок 279.
00:06:23
Dijkstra's Algorithm for SSSPP
Урок 280.
00:12:36
Dijkstra's Algorithm in Java - 1
Урок 281.
00:08:47
Dijkstra's Algorithm in Java - 2
Урок 282.
00:03:47
Dijkstra's Algorithm with Negative Cycle
Урок 283.
00:10:56
Bellman Ford Algorithm for SSSPP
Урок 284.
00:05:19
Bellman Ford Algorithm with Negative Cycle
Урок 285.
00:04:21
Why Bellman Ford runs V-1 times?
Урок 286.
00:10:46
Bellman Ford Algorithm Implementation in Java
Урок 287.
00:03:38
BFS vs Dijkstra vs Bellman Ford
Урок 288.
00:04:24
What is All Pairs Shortest Path Problem?
Урок 289.
00:04:25
Dry Run for All Pairs Shortest Path Problem
Урок 290.
00:09:11
Floyd Warshall Algorithm
Урок 291.
00:04:50
Why Floyd Warshall Algorithm?
Урок 292.
00:02:34
Floyd Warshall with Negative Cycle
Урок 293.
00:12:28
Floyd Warshall in Java
Урок 294.
00:02:43
BFS vs Dijkstra vs Bellman Ford vs Floyd Warshall Algorithms
Урок 295.
00:04:34
What is Minimum Spanning Tree?
Урок 296.
00:02:56
What is Disjoint Set?
Урок 297.
00:11:51
Disjoint Set in Java
Урок 298.
00:09:12
Kruskal Algorithm
Урок 299.
00:15:46
Kruskal Algorithm in Java
Урок 300.
00:05:42
Prim's Algorithm
Урок 301.
00:09:59
Prim's Algorithm in Java
Урок 302.
00:03:35
Kruskal vs Prim's Algorithms
Урок 303.
00:00:40
Introduction
Урок 304.
00:10:52
Solution to Route Between Nodes
Урок 305.
00:05:37
What is Greedy Algorithm?
Урок 306.
00:08:31
Known Greedy Algorithms
Урок 307.
00:05:37
Activity Selection Problem
Урок 308.
00:17:07
Activity Selection Problem in Java
Урок 309.
00:04:27
Coin Change Problem
Урок 310.
00:08:11
Coin Change Problem in Java
Урок 311.
00:05:23
Fractional Knapsack Problem
Урок 312.
00:17:09
Fractional Knapsack Problem in Java
Урок 313.
00:06:59
What is a Divide and Conquer Algorithm?
Урок 314.
00:06:52
Common Divide and Conquer Algorithms
Урок 315.
00:05:00
How to solve Fibonacci series using Divide and Conquer approach?
Урок 316.
00:06:27
Number Factor
Урок 317.
00:05:45
Number Factor in Java
Урок 318.
00:07:11
House Robber
Урок 319.
00:06:29
House Robber in Java
Урок 320.
00:06:16
Convert One String to Another
Урок 321.
00:07:56
Convert One String to Another in Java
Урок 322.
00:05:11
Zero One Knapsack Problem
Урок 323.
00:07:51
Zero One Knapsack Problem in Java
Урок 324.
00:06:23
Longest Common Subsequence Problem
Урок 325.
00:07:04
Longest Common Subsequence Problem in Java
Урок 326.
00:05:48
Longest Palindromic Subsequence Problem
Урок 327.
00:06:20
Longest Palindromic Subsequence Problem in Java
Урок 328.
00:05:03
Minimum Cost to Reach Last Cell
Урок 329.
00:05:07
Minimum Cost to Reach Last Cell in Java
Урок 330.
00:05:17
Number of Paths To Reach The Last Cell with Given Cost
Урок 331.
00:06:10
Number of Paths To Reach The Last Cell with Given Cost in Java
Урок 332.
00:04:58
What is Dynamic Programming? (Overlapping property)
Урок 333.
00:02:09
Where Does the Name of DP Come From?
Урок 334.
00:11:28
Top Down with Memoization
Урок 335.
00:07:44
Bottom Up with Tabulation
Урок 336.
00:04:18
Top Down vs Bottom Up
Урок 337.
00:04:31
Is Merge Sort Dynamic Programming?
Урок 338.
00:12:27
Number Factor Problem using Dynamic Programming
Урок 339.
00:08:34
Number Factor : Top Down and Bottom Up
Урок 340.
00:10:24
House Robber Problem using Dynamic Programming
Урок 341.
00:05:30
Convert one string to another using Dynamic Programming
Урок 342.
00:02:58
Introduction
Урок 343.
00:06:02
Step 1 - Understand the Problem
Урок 344.
00:06:41
Step 2 - Examples
Урок 345.
00:07:44
Step 3 - Break it Down
Урок 346.
00:10:56
Step 4 - Solve or Simplify
Урок 347.
00:07:34
Step 5 - Look Back and Refactor
Урок 348.
00:10:02
What is Backtracking?
Урок 349.
00:04:35
Backtracking vs Brute Force
Урок 350.
00:09:39
N - Queens Problem