
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Master data structures and algorithms through daily challenges, animated explanations, and real interview problems. Analyze time and space complexity using Big-O, and develop problem-solving and communication skills for coding interviews.
Build consistency and momentum by following daily DSA challenges, solving problems solo before checking solutions, coding every solution, and using the course tracker to maintain a perfect streak.
Explore what data structures are: collections of data values, relationships, and operations, using arrays as an example to show their role in coding interviews and time and space efficiency.
Learn big-o analysis to determine how time and space complexity grow with input size. Compare algorithms by counting simple operations to assess efficiency and scalability for large data.
Explore asymptotic analysis and big O, showing how time complexity tracks an algorithm's growth with input size n, and compare common complexities from O(1) to O(n!), highlighting trend.
Explore how space complexity measures the extra memory used by algorithms with Big-O notation, including O(1) and O(n) cases, time-space trade-offs, primitive constant space, and simplification rules.
Understand base-two logarithms in coding interviews with examples like log 16 = 4 and log 8 = 3. Connect to binary search by noting halving inputs yields log-time complexity.
Analyze the time and space complexity of common array operations - access and set (O(1)), traversal and copy (O(n)) - and insertions/removals at various positions, including dynamic versus static arrays.
Solve a coding interview q1 easy problem: a sorted array of integers is squared and returned in ascending order, handling negatives, zeros, duplicates, and edge cases with clear test cases.
Explore the brute force method: square each array element into a new array, then sort for the final order. It runs in O(n log n) time and uses O(n) space.
Create a new array of the input length, fill with zeros, square each value, then sort ascending and return the result, using console logs for debugging.
Leverage the sorted input and a two-pointer approach to square the extreme elements and fill a new array from the end, achieving O(n) time with O(n) space.
Use a two-pointer approach to build a sorted squared array from a sorted input. Fill a new array from the end, compare left and right squares, and adjust pointers.
Assess whether an integer array is monotonic by identifying monotone increasing or monotone decreasing patterns using non-decreasing and non-increasing sequences, and return true if monotonic, else false.
Assess monotonic arrays by distinguishing non increasing and non decreasing patterns in three first-last element cases. Then verify with a single pass, yielding O(n) time and O(1) space.
Solve the monotonic array problem in JavaScript by checking for an empty array, comparing the first and last elements, and validating equal, increasing, or decreasing trends.
Celebrate day one by mastering arrays and Big-O notation, building a solid foundation in data structures and algorithms for top tech interviews. Stay consistent and keep progressing throughout the course.
Discover recursion as a function calling itself until a base condition, with factorials and simple examples, and learn when to divide problems into smaller subproblems for efficient solutions.
Master recursion through five steps—identify subproblems, trust the recursive call, link subproblems to original problem, and enforce a base case, with examples like sequence printing and factorials for coding interviews.
Visualize recursion with a recursion tree and a recursion call stack using the five factorial example, showing base cases, multiplications, and how time and space complexity flow.
Compare recursion and iteration by illustrating factorial computation and highlighting space complexity and call stack differences. Notice how recursion provides readability and ease of writing, as iteration minimizes space usage.
Learn how to identify the base condition in recursion by focusing on the last valid input or the first invalid input, using factorial examples and clear pseudocode.
Explore how the recurrence relation expresses a problem's solution as the solution to smaller subproblems within recursion, illustrated by factorial and sequence printing examples.
Learn to solve recursion questions by drawing a recursion tree, using the Fibonacci series as an example, and translate insights into simple code with base cases and recursive calls.
Master recursion by solving sum from zero to n and from n to zero, using base cases and recursion trees to strengthen coding interview problem solving.
Explore how recursion underpins backtracking, dynamic programming, greedy methods, and divide-and-conquer techniques; learn top-down memoization, bottom-up tabulation, and apply to classic interview problems such as Josephus and Tower of Hanoi.
Analyze time complexity by counting recursion tree nodes and the work per node, including leaf nodes, and assess space complexity from the maximum call-stack depth.
Explore the kth symbol in grammar by building rows from zero, replacing 0 with 01 and 1 with 10, then locate the kth symbol in the nth row.
Explore a recursive approach to the k-th symbol in grammar, using base case n=1 and recurrence relations, with half-split logic and not operations.
Present pseudocode for the k-th symbol in grammar using a recursive k gram; base case n=1 returns 0, with length 2^(n-1) and a midpoint split, and analyze complexity.
Explains the time and space complexity of the recursive k-th symbol in grammar solution, using an n and k example to show linear growth with n and the recursion stack.
Apply a recursive solution to find the k-th symbol in grammar, with base case n=1 as 0 and a mid split mapping to k or k-mid, flipping via 1 minus.
Explore the Josephus problem by simulating a circular game where every k-th friend is eliminated until one winner remains, with examples and test cases.
Examine three approaches to the Josephus problem, from a recursive base with O(n^2) to an iterative O(n) solution using modulo and zero-based indexing.
Translate Josephus into pseudocode by building the array, selecting the start index, and applying base and recursive steps to remove players until one remains.
Assess the Josephus problem approach one: each winner call deletes an element, yielding O(n) per call and O(n) calls, for O(n^2) time and O(n) space with the recursive stack.
Learn a JavaScript solution to josephus problem using a recursive helper and array, computing removal index with (start + k - 1) mod length and splicing until one winner remains.
Apply approach two to the Josephus problem by using the n-1 solution with a fixed k, employ a recurrence and modulo to determine the safe position, and discuss base cases.
Write pseudocode for Josephus problem using recursion. Implement winner(n, k) with base case n == 1 returns 0 and (subproblem + k) mod n to solve, then adjust to one-indexing.
Explore the Josephus problem's approach two, illustrating O(n) time and O(n) space due to n recursive calls and constant work per call.
Explore a recursive JavaScript solution to the Josephus problem, using a helper function, a base case for n=1, and modulo arithmetic to derive the winner, with one-based indexing.
Approach 3 offers a space-optimized iterative solution, building on approach 2, to compute the safe position with (prev + k) mod n, using zero-indexing and an example n=5, k=3.
Analyze the iterative solution to the Josephus problem, showing linear time complexity and constant space, with constant-time operations per iteration, and contrast with the recursive approach.
Implement the iterative Josephus solution in JavaScript by updating survivor with survivor plus k mod i from i equals 2 to n, then return survivor plus 1.
Celebrate small victories as you tackle recursion and build problem solving skills, stay motivated, keep practicing, and push toward acing tough interview questions.
Solve Tower of Hanoi with three rods by moving one disk at a time, printing steps and returning total moves, while never placing a larger disk on a smaller one.
Identify why recursion solves the Tower of Hanoi by solving subproblems with n minus one disks on the same three rods.
Explore solving the Tower of Hanoi with recursion, using three rods, from a one-disk base to general n disks via moving n-1 disks, the largest disk, and then n-1 disks.
Examine the recursion tree for Tower of Hanoi with three disks, detailing recursive calls, base cases, and print steps moving disks from rod one to rod three via auxiliary rod.
Explore a recursive JavaScript solution for the Tower of Hanoi, moving n disks from the from road to the to road via an auxiliary road, printing moves and counting moves.
Examine the time and space complexity of the Tower of Hanoi solution. The recursion stack yields space complexity O(n), while the moves follow O(2^n) time via the recurrence t(n)=2t(n-1)+1.
Master a recursive approach to summing a peculiar array of integers or nested arrays, by computing each nested array's equivalent value and raising to its nesting level.
Implement a recursive sum power function for nested arrays, then determine time complexity O(n) and space complexity O(d).
Explore solving the power sum problem by traversing a mixed nested array and summing integers, recursively processing subarrays with incremented power, and returning the final result using Math.pow.
Celebrate completing day three with Tower of Hanoi and the power sum problem, showcasing perseverance that will set you apart in interviews.
Backtracking is a recursive, algorithmic approach that builds solutions step by step by exploring many paths. It uses pruning to abandon unworkable routes and makes in-place state changes, as shown with Sudoku.
Explore how backtracking differs from simple recursion, focusing on controlled recursion, in-place state changes, and pruning paths that fail to lead to a solution.
Backtracking explores one option at a time using recursion, pruning paths when constraints fail to efficiently find valid solutions, as illustrated by Sudoku’s empty-cell choices.
Backtracking modifies the problem state in place by swapping elements (input passed by reference) to generate all string permutations without creating new arrays.
Master backtracking by applying a recursive blueprint with base conditions, in-place state changes, and valid choices, including for loops and revert steps, to solve problems like sudoku.
Identify when to use backtracking in coding interviews by exploring all paths to find all solutions (e.g., permutations) and recognize when to avoid it for optimization problems.
Learn to generate all permutations of an array of distinct integers, illustrated by [1,2,3]. Practice writing test cases and considering interview edge questions about empty input.
The lecture shows that three distinct elements yield six permutations (three factorial) and presents a recursive, in-place swapping approach using two pointers to generate and copy all permutations.
Learn to write pseudocode for a backtracking permutation algorithm using a perm helper, base case, in-place swaps, and recursive calls to generate all permutations.
Implement a recursive solution to generate permutations with a helper and a results array, using a base case and backtracking via swaps to restore state.
Explore the time and space complexity of generating all permutations with a recursive approach: time is O(n * n!) and space is O(n) due to recursion depth.
Solve the permutations two problem by generating all unique permutations from a numbers collection that may contain duplicates, as demonstrated with input 1,1,2 returning three unique permutations in an array.
Explore a recursive approach to generate unique permutations by pruning duplicate branches with a hash table, using swaps and recursion to collect all distinct arrangements.
Write pseudocode for a backtracking approach to generate permutations, using a hash table to track seen values and skip duplicates before recursive calls.
Implement a recursive solution for permutations two using a helper function and index-based recursion. Prune duplicates with a hash table, backtrack by undoing swaps, and check test cases.
Explore permutations with duplicates and derive that the time complexity is O(n·n!) and the space complexity is O(n) due to the recursive call depth.
Celebrate milestones as you backtrack through DSA problems, strengthening your understanding and growing with each solution, and prepare for tougher LeetCode challenges ahead.
Learn to generate the power set of a unique-element array by listing all subsets, with no duplicates, in any order, using practical test cases.
Learn to generate the power set by including or excluding each array element, yielding two to the power of n subsets; implement recursively (and iteratively) with a helper function.
Compare the pseudocode with the backtracking blueprint to generate subsets, highlighting the base condition, two choices: exclude and include, in place updates, and the backtracking pop.
We analyze the subset generation approach, noting 2^n subsets and a time complexity of O(n 2^n) with space complexity O(n) from recursion depth.
Implement a power set function in JavaScript using a recursive helper to generate all subsets by including or excluding each element, copying subsets with slice.
Walk through a recursive power set generator for an array, tracing how helper builds subsets and pushes copies to output, with two to the power of n time and space.
Solve the medium coding interview question subsets two by generating subsets from an array that may contain duplicates, ensuring power set has no duplicate subsets and output in order.
Learn a duplicate tolerant approach to generating unique subsets by sorting the array, using include exclude branches, and skipping all duplicates in the exclude path.
Analyze the time and space complexity of generating subset sets, showing worst-case 2^n subsets with n recursive calls and O(n) space, ignoring the O(n log n) sort.
Celebrate day five milestones as you tackle subsets and backtracking, reinforcing a strong foundation that helps you stand out in interviews through consistent, dedicated effort.
Explore generating all k-number combinations from 1 to n, a classic coding interview question. Use the n=4, k=2 example to illustrate possible pairs and discuss clarifying questions about constraints.
Explore a recursive backtracking approach to generate all k-element combinations from 1 to n using two pointers. See how i and j progress, backtrack, and build results.
Analyze the time complexity of generating all k-length combinations by a recursive approach, showing it equals k times n choose k, with space complexity O(k) due to recursion depth.
Use an optimization in combination generation by limiting the next index to n minus need minus one, reducing unnecessary branches and speeding up k-length selections.
Master the combination sum one coding interview question: find all unique combinations from a distinct candidates array that sum to a target, using numbers unlimited times, in any order.
Use a backtracking approach to find all combinations from the candidates that sum to the target with unlimited reuse, pruning branches and avoiding duplicates by starting from the current index.
Analyze the space and time complexity of the combinations approach using a recursion tree with maximum depth t divided by m, pruning branches when sums exceed the target.
Apply a geometric progression to bound the number of nodes in a 3-ary recursive tree, giving (3^(height+1) - 1)/2, and generalize to n children for later complexity analysis.
Analyze the upper bound of nodes in this recursive tree via its height t/m and derive time complexity as n^{t/m+1} and space complexity as t/m.
Learn a recursive solution to the combination sum one problem, building combinations from a non-negative candidates array to reach a target, allowing repeated values and using backtracking.
Celebrate day six milestones by mastering combinations and backtracking, as your problem-solving skills grow with daily challenges and steady effort paying off in interviews.
Solve the medium coding interview question combination sum 2 by finding unique combinations from candidates that sum to a target, using each number once and avoiding duplicates.
Compare combination sum one and two, noting distinct versus duplicate inputs and that each candidate can be used only once, then sort, prune duplicates, and ensure unique output combinations.
Analyze the time and space complexity of the combination sum two approach, with time complexity O(2^n) and space complexity O(n) due to recursion stack and a hash map.
JavaScript code for combination sum 2 sorts candidates to handle duplicates, uses backtracking to build unique combinations, and ensures each candidate is used once by advancing the start index.
Celebrate reaching day seven of the 50 Days of DSA program, as you master problems step by step through dedication, practice, and perseverance that pave your future success.
Build on backtracking to solve the hard sudoku solver, filling empty cells in a 2D array (dots indicate empties) so every row, column, and 3x3 sub box has digits 1–9.
Learn a backtracking approach to solving Sudoku by recursively filling empty cells, pruning invalid paths, and comparing brute force with efficient recursion to find a valid solution.
The lecture presents pseudocode for a sudoku solver using backtracking, detailing how to identify the next empty cell, try numbers 1–9, validate choices, and prune invalid paths.
Master the is valid function for a sudoku box by enforcing row, column, and box constraints, and implement box checks with a for loop iterating 0–8 to map box cells.
Solve sudoku in place using a recursive helper and an is valid check; fill the next empty cell (.) with 1–9, backtracking through rows, columns, and 3x3 boxes.
Analyze the sudoku solver’s complexity, showing constant time and space due to a fixed 9x9 board, with backtracking and recursion driving up to 81 calls.
Solve the hard n-queens puzzle using backtracking to place n queens on an n by n chessboard so that no two attack each other, producing all distinct solutions.
Use a backtracking approach to solve the n queens problem by placing one queen per row, checking columns and diagonals, pruning invalid branches, and collecting all solutions.
Write the pseudocode for solving the n-queens problem using backtracking, including a recursive backtrack function, is_valid checks for column and diagonals, and revert steps to explore all solutions.
Solve the n-queens problem in JavaScript by building an n x n board, placing queens row by row with recursive backtracking and validating with column and diagonal checks.
Analyze the space and time complexity of the n-queens solution, showing time grows as n factorial with pruning and space remains at order n squared.
Explore dynamic programming as recursion plus storage, using memoization and tabulation to solve problems like the Fibonacci sequence with fewer recomputations, highlighting overlapping subproblems and optimal substructure.
Master dynamic programming by recognizing patterns and variations to tackle new questions. Recognize key patterns such as Fibonacci, knapsack, LCS, LIS, gap strategy, partition, and Kadane's algorithm.
Adopt a dynamic programming workflow: begin with a recursive solution, then add memoization (top-down), followed by tabulation (bottom-up) and space optimization to master dynamic programming patterns.
Learn how writing a recursive solution clarifies subproblems, transition formulas, and base conditions, then apply that insight to build bottom-up tabulation and DP tables for coding interview questions.
Identify dynamic programming problems by spotting an optimal solution, such as longest or maximum values, and by recognizing recursion with multiple choices that create overlapping subproblems and optimal substructure.
Implement a function that computes f(n) in the Fibonacci sequence for n >= 0 using f(0)=0, f(1)=1, and f(n)=f(n-1)+f(n-2). Explore multiple approaches and their time and space implications.
Explore dynamic programming with the Fibonacci coding interview question, identifying overlapping subproblems and optimal substructure, and implement four approaches: recursive, memoized, bottom-up tabulation, and space-optimized tabulation.
Explore recursion through the fibonacci function, using base cases for n less than 2 and recursive calls to f(n-1) and f(n-2), then transition to a dynamic programming approach.
Examine the time and space complexity of the recursive Fibonacci solution. Discover how DP solutions, including the space-optimized tabulation approach, significantly improve both time and space.
Write a recursive Fibonacci function in JavaScript using the base case n <= 1 and fib(n-1) + fib(n-2), then run tests to confirm they pass.
Turn the fibonacci recursion into a top-down memoization approach using a hash table to store computed values and retrieve them in constant time.
Analyze the time and space complexity of the memoization approach for the Fibonacci problem, showing O(n) time and O(n) space due to the hash table and recursive call stack.
Implement a memoization approach in JavaScript using a hash table to store Fibonacci results, with base cases fib(0)=0 and fib(1)=1, then compute and cache recursively.
Explore the tabulation (bottom-up) approach to the Fibonacci problem, using a 1D table, base cases f(0)=0 and f(1)=1, and iterative filling to obtain f(n).
Assess the time and space complexity of the tabulation approach. The time complexity is O(n) and the space complexity is O(n) due to the one dimensional table.
Explore the tabulation approach for Fibonacci using a dynamic programming array. Initialize dp[0] and dp[1], then iteratively fill dp[count] = dp[count-1] + dp[count-2] up to n.
Explore space-optimized bottom-up tabulation for Fibonacci, using three variables (prev, curr, next) with a while loop, achieving O(n) time and O(1) space.
Use a space-optimized tabulation to compute fib(n) in JavaScript, with prev, cur, and next updated in a while loop. Include a concise complexity analysis.
Master the climbing stairs problem: count distinct ways to reach n steps when you can take 1 or 2 steps, using dynamic programming and the Fibonacci relation.
Derive the number of ways to reach the top with a fibonacci-like recurrence f(n)=f(n-1)+f(n-2), and explore recursive, tabulation, and space-optimized approaches.
Solve the minimum cost climbing stairs problem by choosing 1 or 2 steps from a cost array, starting at index 0 or 1, to reach beyond the last index.
Develop a recursive solution for the minimum-cost path on a cost array, paying for each step, moving one or two steps, with the destination beyond the array and base case.
Explain the recursive approach's time and space complexity, with worst-case time of two to the power n and space equal to n due to the call stack.
Implement a recursive JavaScript solution for the minimum cost climbing stairs, using a helper, base case at n, and one- or two-step moves from index zero or one.
Apply memoization, a top-down approach, to solve minimum cost climbing stairs by caching computed costs in an array or hash map, avoiding recomputation of overlapping subproblems.
Explain how memoization stores computed costs so each index is visited only once, yielding time and space complexity O(n) for the minimum cost climbing stairs problem.
Memorize recursive solutions with a memoization approach by initializing a memo array with -1, checking memo before recursion, and storing computed values to optimize by avoiding recomputation.
Apply the tabulation bottom-up approach to solve the minimum cost to climb stairs by building a length n+1 table and using the recurrence to reach beyond the last index.
Analyze the space and time complexity of the bottom-up approach for minimum cost climbing stairs. Time and space complexities are O(n), using an array or hash map to store costs.
This lecture presents a tabulation approach to minimize climb costs using a dp array of length n+1, computing dp[i] from i-1 or i-2, and returning dp[n].
Looking for the best DSA JavaScript course? Master data structures and algorithms in JavaScript with this comprehensive JavaScript DSA course designed for LEETCODE and technical interviews. Learn DSA with JavaScript through 117 coding challenges across 50 structured days. Perfect for mastering DSA in JS and acing your next coding interview.
Student Testimonials:
"Basically I'm a beginner to javascript but after listening the way of his teaching , i have no word for him he's fabulous person . and I recommend all to watch his course." - Mohd. Amir
"Excellent explanations and application of theory directly to practice!" - GUILLERMO GABRIEL KELLY SCHMIDT
"Explanations and demonstrations are on point and it makes grasping easier.." - Emmanuel Apea
"Excellent Teaching" - Sarhan Sayyed Rasool Shaikh
"Excellent course. The teacher has mastery of what he explains and the content is of great value."-Vyctor Vieira Guimarães
"It's an amazing course the instructor is super amazing and the way of teaching it is super awesome clarify everything very well and the roadmap for learning DSA is superb. Go with this guy without a second thought you will love it for sure..." - Shashank Jaiswal
"Excellent, way of teaching" - Gauri Shankar Jangid
About the Course:
Welcome to the Data Structures and Algorithms Coding Interview Bootcamp with Javascript!
The primary goal of this course is to prepare you for coding interviews at top tech companies. By tackling one problem at a time and understanding its solution, you'll accumulate a variety of tools and techniques for conquering any coding interview.
Daily Data Structures and Algorithms Coding Challenges:
The course is structured around daily coding challenges. Consistent practice will equip you with the skills required to ace coding interviews. For the next 50 days commit to yourself to practice atleast 2 coding interview questions everyday. You don't need any setup for this as the daily coding problem challenges can be solved in the coding environment provided by Udemy. The course will automatically track your progress and you just need to spend your time making actual progress everyday.
Topics Covered:
We start from the basics with Big O analysis, then move on to very important algorithmic techniques such as Recursion, Backtracking and Dynamic Programming Patters. After this we move to cover common data structures, and discuss real problems asked in interviews at tech giants such as Google, Meta, Amazon, Netflix, Apple, and Microsoft.
For each question, we will:
Discuss the optimal approach
Explain time and space complexity
Code the solution in Javascript (you can follow along in your preferred language)
Additional Resources :
The course includes downloadable resources, motivational trackers, and cheat sheets.
Course Outline:
Day 1: Arrays, Big O, Sorted Squared Array, Monotonic Array
Day 2:Recursion,k-th symbol in Grammar,Josephus problem
Day 3:Recursion, Tower of Hanoi, Power Sum
Day 4:Backtracking, Permutations, Permutations 2
Day 5:Backtracking, Subsets, Subsets 2
Day 6:Backtracking, Combinations, Combinations Sum 1
Day 7:Backtracking,Combinations Sum 2,Combinations Sum 3
Day 8:Backtracking,Sudoku Solver, N Queens
Day 9:Dynamic Programming, Fibonacci, Climbing Stairs
Day 10:Dynamic Programming, Min Cost Climbing Stairs, Tribonacci
Day 11:Dynamic Programming, 01 Knapsack, Unbounded Knapsack
Day 12:Dynamic Programming, Target Sum, Partition Equal Subset Sum
Day 13:Dynamic Programming, LCS, Edit Distance
Day 14:Dynamic Programming, LIS, Max Length of Pair Chain, Russian Doll Envelopes
Day 15:Dynamic Programming, Palindromic Substrings, Longest Palindromic Substring, Longest Palindromic Subsequence
Day 16:Dynamic Programming, Palindrome Partitioning, Palindrome Partitioning 2
Day 17:Dynamic Programming, Word Break, Matrix Chain Multiplication
Day 18:Dynamic Programming, Kadane's algorithm - Max Subarray, Maximum Product Subarray
Day 19:Greedy Algorithms - Fractional Knpasack, Non overlapping Intervals
Day 20:Greedy Algorithms - Jump Game 1, Minimum # of arrows to burst baloons
Day 21:Greedy Algorithms - Two City Scheduling, Boats to Save people
Day 22:Greedy Algorithms - Task Scheduler, Largest Number
Day 23:Greedy Algorithms - Gas Stations, Jump Game 2
Day 24: Arrays, Rotate Array, Container with Most Water
Day 25: Hash Tables, Two Sum, Isomorphic Strings
Day 26: Strings, Non-Repeating Character, Palindrome
Day 27: Strings, Longest Unique Substring, Group Anagrams
Day 28: Searching, Binary Search, Search in Rotated Sorted Array
Day 29: Searching, Find First and Last Position, Search in 2D Array
Day 30: Sorting, Bubble Sort, Insertion Sort
Day 31: Sorting, Selection Sort, Merge Sort
Day 32: Sorting, Quick Sort, Radix Sort
Day 33: Singly Linked Lists, Construct SLL, Delete Duplicates
Day 34: Singly Linked Lists, Reverse SLL, Cycle Detection
Day 35: Singly Linked Lists, Find Duplicate, Add 2 Numbers
Day 36: Doubly Linked Lists, DLL Remove Insert, DLL Remove All
Day 37: Stacks, Construct Stack, Reverse Polish Notation
Day 38: Queues, Construct Queue, Implement Queue with Stack
Day 39: Binary Trees, Construct BST, Traversal Techniques
Day 40: Pre order and In order Traversal of Binary Tree - Iterative
Day 41: Post Order Traversal Iterative, Path Sum 2
Day 42: Construct Binary Tree from Pre and In order Traversal ^ In and Post order Traversal
Day 43: Binary Trees, Level Order Traversal, Left/Right View
Day 44: Level order Trav 2, ZigZag Traversal
Day 45: Vertical order Traversal, Sum root to leaf numbers
Day 46: Binary Trees, Invert Tree, Diameter of Tree
Day 47: Binary Trees, Convert Sorted Array to BST, Validate BST
Day 48: Lowest common Ancestor of BST, Unique BST 2
Day 49: Lowest common Ancestor of Binary Tree, Unique BST 1
Day 50: Serialize and Deserialize Binary Tree, N-ary Tree Level Order Traversal
Day 51: Heaps, Max Heap, Min Priority Queue
Day 52: Graphs, BFS, DFS
Day 53: Graphs, Number of Connected Components, Topological Sort
Day 54: Number of Provinces, Find if path exists in Graph
Day 55: Number of Islands, Numbers with same consecutive differences
My confidence in your satisfaction with this course is so high that we offer a complete money-back guarantee for 30 days! Thus, it's a totally risk-free opportunity. Register today, facing ZERO risk and standing to gain EVERYTHING.
So what are you waiting for? Join the best Javascript Data Structures & Algorithms Bootcamp on Udemy.
I'm eager to see you in the course.
Let's kick things off! :-)
Jackson