Skip to main content

Recursion, Backtracking and Dynamic Programming in Java

9h 46m 17s
English
Paid

Course description

This course is about the fundamental concepts of algorithmic problems focusing on recursion, backtracking, dynamic programming and divide and conquer approaches. As far as I am concerned, these techniques are very important nowadays, algorithms can be used (and have several applications) in several fields from software engineering to investment banking or R&D.

Read more about the course

Section 1 - RECURSION

  • what are recursion and recursive methods

  • stack memory and heap memory overview

  • what is stack overflow?

  • Fibonacci numbers

  • factorial function

  • tower of Hanoi problem

Section 2 - SEARCH ALGORITHMS

  • linear search approach

  • binary search algorithm

Section 3 - SELECTION ALGORITHMS

  • what are selection algorithms?

  • how to find the k-th order statistics in O(N) linear running time?

  • quickselect algorithm

  • median of medians algorithm

  • the secretary problem

Section 4 - BACKTRACKING

  • what is backtracking?

  • n-queens problem

  • Hamiltonian cycle problem

  • coloring problem

  • knight's tour problem

  • Sudoku game

Section 5 - DYNAMIC PROGRAMMING

  • what is dynamic programming?

  • knapsack problem

  • rod cutting problem

  • subset sum problem

Section 6 - OPTIMAL PACKING

  • what is optimal packing?

  • bin packing problem

Section 7 - DIVIDE AND CONQUER APPROACHES

  • what is the divide and conquer approach?

  • dynamic programming and divide and conquer method

  • how to achieve sorting in O(NlogN) with merge sort?

  • the closest pair of points problem

Section 8 - COMMON INTERVIEW QUESTIONS

  • top interview questions (Google, Facebook and Amazon)

In each section we will talk about the theoretical background for all of these algorithms then we are going to implement these problems together from scratch in Java.

Finally, YOU CAN LEARN ABOUT THE MOST COMMON INTERVIEW QUESTIONS (Google, MicroSoft, Amazon etc.)

Watch Online

This is a demo lesson (10:00 remaining)

You can watch up to 10 minutes for free. Subscribe to unlock all 82 lessons in this course and access 10,000+ hours of premium content across all courses.

View Pricing
0:00
/
#1: Introduction

All Course Lessons (82)

#Lesson TitleDurationAccess
1
Introduction Demo
02:09
2
What are stack and heap memory?
03:45
3
Stack memory and heap memory simulation
06:15
4
Recursion introduction
08:44
5
Adding numbers: iteration vs recursion
05:05
6
Recursion and stack memory (stack overflow)
10:10
7
Head recursion and tail recursion implementation
06:39
8
Factorial function - head recursion
06:07
9
Factorial problem - visualizing the stack
04:15
10
Factorial function - tail recursion
05:48
11
Fibonacci numbers - head recursion
04:58
12
Towers of Hanoi problem introduction
06:01
13
Tower of Hanoi problem implementation
05:39
14
Towers of Hanoi - visualizing the stack
07:09
15
Iteration and recursion revisited
01:43
16
What is linear search?
01:39
17
Linear search implementation
03:17
18
What is binary (logarithmic) search?
03:49
19
Binary search implementation
08:54
20
Selection algorithms introduction
06:44
21
Quickselect introduction - Hoare algorithm
09:49
22
Quickselect visualization
08:52
23
Quickselect implementation
11:57
24
What the problem with pivots?
05:50
25
Advanced selection - median of medians algorithm
07:31
26
Combining algorithms - introselect algorithm
01:23
27
Online selection - the secretary problem
08:02
28
Backtracking introduction
05:51
29
Brute-force search and backtracking
04:03
30
N-queens problem introduction
08:07
31
What is the search tree?
03:10
32
N-queens problem implementation I
09:22
33
N-queens problem implementation II
06:17
34
N-queens problem and stack memory visualization
06:22
35
Hamiltonian paths (and cycles) introduction
08:03
36
Hamiltonian cycle illustration
04:42
37
Hamiltonian cycle implementation I
10:17
38
Hamiltonian cycle implementation II
07:02
39
Coloring problem introduction
08:49
40
Coloring problem visualization
04:33
41
Coloring problem implementation I
07:18
42
Coloring problem implementation II
05:25
43
Knight's tour introduction
03:55
44
Knight's tour implementation I
10:33
45
Knight's tour implementation II
04:49
46
Maze problem introduction
04:59
47
Maze problem implementation I
07:22
48
Maze problem implementation II
06:53
49
Sudoku introduction
05:52
50
Sudoku implementation I
08:38
51
Sudoku implementation II
03:28
52
What is the issue with NP-complete problems?
05:05
53
Dynamic programming introduction
08:24
54
Fibonacci numbers introduction
03:31
55
Fibonacci numbers implementation
08:36
56
Knapsack problem introduction
18:08
57
Knapsack problem example
12:59
58
Knapsack problem implementation I
08:08
59
Knapsack problem implementation II
04:27
60
Rod cutting problem introduction
08:04
61
Rod cutting problem example
11:07
62
Rod cutting problem implementation
08:46
63
Subset sum problem introduction
10:12
64
Subset sum problem example
09:09
65
Subset sum problem implementation
09:05
66
Bin packing problem introduction
08:10
67
Bin packing problem implementation
06:53
68
What are divide-and-conquer approaches?
09:24
69
Binary search revisited
01:46
70
Merge sort theory
08:18
71
Merge sort implementation
06:27
72
Closest pair of points problem introduction I
15:21
73
Closes pair of points problem introduction II
04:15
74
Closest pair of points implementation
23:54
75
Palindrome problem solution
08:01
76
Integer reversion solution
07:01
77
Two eggs problem solution I
08:02
78
Two eggs problem solution II
11:40
79
Duplicates in an array problem solution
07:57
80
Anagram problem solution
03:52
81
Largest sum subarray problem solution
10:49
82
What is Algorhyme?
00:42

Unlock unlimited learning

Get instant access to all 81 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.

Learn more about subscription

Comments

0 comments

Want to join the conversation?

Sign in to comment

Similar courses

The complete guide to running Java in Docker and Kubernetes

The complete guide to running Java in Docker and Kubernetes

Sources: udemy
If you need to learn how to run, tune, and maintain JVM applications that run in Docker and/or Kubernetes then this is the course for you. This course is very different from oth...
4 hours 39 minutes 16 seconds
System Design Interview

System Design Interview

Sources: neetcode.io
Prepare for your system design interviews with this comprehensive course. System design interviews are a crucial part of the tech interview process, and this co
4 hours 9 minutes 34 seconds
Java Programming Bootcamp: Zero to Mastery

Java Programming Bootcamp: Zero to Mastery

Sources: zerotomastery.io
Learn Java programming from scratch to advanced skills with an industry expert. Enhance your skills with over 80 exercises and 18 quizzes. Perfect for aspiring
9 hours 15 minutes 36 seconds
Oracle Java Certification - Pass the Associate 1Z0-808 Exam.

Oracle Java Certification - Pass the Associate 1Z0-808 Exam.

Sources: udemy
So you've learnt some Java, but are struggling to get an interview, let alone a job. Or you are stuck in a low paying programming job, and want to move up to a
20 hours 8 minutes 36 seconds
Hack the Tech Interview (The Pro Package)

Hack the Tech Interview (The Pro Package)

Sources: Randall Kanna
The course is an intensive bootcamp aimed at successfully passing programming interviews and securing a high-paying job...
7 hours 5 minutes 32 seconds