Knight Dialer | Recursion Memoization | Bottom Up DP | Google | Dropbox | Leetcode 935
Whatsapp Community Link : https://www.whatsapp.com/channel/0029Va6kVSjICVfiVdsHgi1A
This is the 74th Video of our DP Playlist.
In this video we will try to solve a very good DP problem - Knight Dialer (Leetcode -935).
I will explain the intuition so easily that you will never forget and start seeing this as cakewalk EASYYY.
We will do live coding after explanation and see if we are able to pass all the test cases.
Also, please note that my Github solution link below contains both C++ as well as JAVA code.
Problem Name : Knight Dialer
Company Tags : Facebook, Dropbox, Microsoft, Google
My solutions on Github(C++ & JAVA) : https://github.com/MAZHARMIK/Interview_DS_Algo/blob/master/DP/Knight%20Dialer.cpp
Leetcode Link : https://leetcode.com/problems/knight-dialer/
My DP Concepts Playlist : https://youtu.be/7eLMOE1jnls
My Graph Concepts Playlist : https://youtu.be/5JGiZnr6B5w
My GitHub Repo for interview preparation : https://github.com/MAZHARMIK/Interview_DS_Algo
Subscribe to my channel : https://www.youtube.com/@codestorywithMIK
Instagram : https://www.instagram.com/codestorywithmik/
Facebook : https://www.facebook.com/people/codestorywithmik/100090524295846/
Twitter : https://twitter.com/CSwithMIK
Approach-1 Summary (Recursion + Memoization) :
The code defines a class Solution with a method knightDialer that calculates the number of ways a knight can move on a phone dial pad to form a number of length n. The dial pad has ten digits, and the knight can move according to certain rules defined in the adj matrix. The code uses dynamic programming with memoization to optimize the calculation, storing intermediate results in the 2D array t. The main function initializes t with -1, and the recursive solve function calculates the number of ways to form a number of a given length starting from each digit. The final result is the sum of these counts for all starting digits. The modular arithmetic with a constant M is applied to avoid integer overflow.
Approach-2 Summary (Bottom Up) :
The code defines a class Solution with a method knightDialer that calculates the number of ways a knight can move on a phone dial pad to form a number of length n. The dial pad has ten digits, and the knight can move according to certain rules defined in the adj matrix. The code uses bottom-up dynamic programming to build a 2D array t, where t[i][j] represents the number of ways to form a number of length i when the knight is currently at digit j. The algorithm iterates through the length of the number and updates the counts based on possible moves, and the final result is the sum of counts for all starting digits. Modular arithmetic with a constant M is applied to prevent integer overflow.
╔═╦╗╔╦╗╔═╦═╦╦╦╦╗╔═╗
║╚╣║║║╚╣╚╣╔╣╔╣║╚╣═╣
╠╗║╚╝║║╠╗║╚╣║║║║║═╣
╚═╩══╩═╩═╩═╩╝╚╩═╩═╝
✨ Timelines✨
00:00 - Introduction
#coding #helpajobseeker #easyrecipes #leetcode #leetcodequestionandanswers #leetcodesolution #leetcodedailychallenge #leetcodequestions #leetcodechallenge #hindi #india #coding #helpajobseeker #easyrecipes #leetcode #leetcodequestionandanswers #leetcodesolution #leetcodedailychallenge#leetcodequestions #leetcodechallenge #hindi #india #hindiexplanation #hindiexplained #easyexplaination #interview#interviewtips #interviewpreparation #interview_ds_algo #hinglish #github #design #data #google #video #instagram #facebook #leetcode #computerscience #leetcodesolutions #leetcodequestionandanswers #code #learning #dsalgo #dsa