The Backtracking Blueprint: The Legendary 3 Keys To Backtracking Algorithms
HTML-код
- Опубликовано: 5 июл 2024
- 0/1 Code & Problem Statement @ backtobackswe.com/platform/co...
Free Mini DSA Course - backtobackswe.com
Try Our Full Platform: backtobackswe.com
📹 Intuitive Video Explanations
🏃 Run Code As You Learn
💾 Save Progress
❓New Unseen Questions
🔎 Get All Solutions
An overview of how to solve problems using backtracking.
- We make choices, we constrain how our recursion advances and we converge toward a goal.
- It can be used in multiple problems:
N Queens
Graph coloring
Sum of Subset
0/1 Knapsack
- It is also an important concept for Artificial Intelligence.
N Queens Video: • The N Queens Problem u...
0/1 Knapsack Video: • The 0/1 Knapsack Probl...
++++++++++++++++++++++++++++++++++++++++++++++++++ Наука
Table of Contents:
Beginning The Backtracking Discussion 0:00 - 1:08
The 3 Keys To Backtracking 1:08 - 2:40
The Choice: Defining Our Decision Space 2:40 - 5:50
The Constraints: Directing Our Recursion 5:50 - 7:42
Our Goal: When Recursion Bottoms Out 7:42 - 9:22
Lesson Summary 9:22 - 10:52
How Do We Know When We Can Use Backtracking 10:52 - 12:07
Wrap Up 12:07 - 13:25
I don't like the word "blueprint" for these problems. There are patterns, I agree. But memorization of code snippets and patterns will rob you of true learning. You won't learn how to think on your own. Don't learn templates, know what is going on deeply.
The code for the Sudoku solver problem is in the description.
@shaurya pratap singh Depends. Like...this is hard to answer. What I focus on is Big N companies and these kinds of questions. For any other job in tech I really am not sure...it depends what you want to do.
But yes, if you can do these then it basically proves you have the intellectual prowess to learn any tools used on the job.
Much much easier to go from being a computer scientist to being a software engineer, than to go from web development to being a computer scientist.
@shaurya pratap singh sure
A video on Dynamic programming blueprint as well
There is no code in the description
I can't find the link to your code
bro can you all make every video from now on like this?..... i love the graphics .... putting the code on the screen is major key
I wish I could. This took 7 hours. I...I really wish I could make everything top notch and it is annoying...but yeah I will continue to mix things up :)
“Our for loop is for exploration in the stack frame” thanks for phrasing it like that it makes a lot of sense to me now
yeah, I knew people would like that. I had that sentence circulating in my brain before I did this video (I had no script)...so I made sure I said it.
i love that your torso just blends into the background with the white shirt and you are just a benevolent set of floating body parts teaching us how to not fail finals tomorrow.
Thanks for making these videos! Your videos are always really engaging and really well-thought out. I hope you keep going with this channel; it's really invaluable to the SWE community. I feel this one particularly was really great because it really helps with building the mental model needed to approaching backtracking. You generally do a great job at this in your other videos, but I'm really glad you took the time to dedicate a whole video on the general approach. It's always great to be able to solve problems, but even more important to build the right intuition.
sure, I try my best....most of the time :)
I am so happy I found this channel! Dynamic Programming scares me but I am determined to combat that scare and these videos will help for sure. Thanks heaps :D
nice
I absolutely love your videos. Your explanations are just spot on. Your videos are the reason why I feel like I am getting a hold of difficult topics like recursion, DP, and backtracking. Great work dude!
Nice
Sometimes we see things that are so splendid that we are out of words to express.And right now I am.
Thanks for this awesome video.
haha nice, thanks
I love your teaching approach, not directly jumping to solutions but showing entire thought process.
thanks
Hi Ben, You are really doing great job. The way you explain the problem, make it very easy to understand and sink.It not only help us to understand the thought process but also bringing interest in to solving this type of problems. Your video's are the best among all the you tube videos which i have seen so far. I really appreciate you and your friend's effort for bringing out such a awesome contents.
It's just me now, but yeah...thanks :)
This is hands down the best description I've heard on helper method recursion/backtracking.
thx
I watched this video about a month ago when I was trying to get my head around backtracking but couldn't understand much. After solving a bunch of problems on Leet Code over the past month, I'm watching this video again, and surprisingly, it makes a lot more sense now xD
Thanks a lot!
Glad it was helpful! 😄 Also check out our FREE DSA Interview Prep Mini-Course - backtobackswe.com/ 🎉
Thank you so much for this. Looking forward to seeing more videos regularly. I don't know why I didn't come across this channel sooner.
welcome
Hey just wanted to let you know that this video is INCREDIBLY helpful. I had an onsite interview with Google and this legit helped me solve 3 out of the 5 questions they asked me. Without ever seeing the problem before, I used this methodology and was able to solve the problems. HUGE thanks
sure
doing great job man!.... It's just my second video that i watched..... I really have respect for you .
nice thanks
The content you are creating is valuable. Educational and entertaining and delivered a way that makes it stick in memory. The approach to the topics makes it easy to grasp and remember the base concepts and tool sets which gives the confidence to handle any interview question. Being able to quickly classify the type of problem and the tool set, algorithm and data structure to address it makes all the difference. If you could somehow show how to implement the code on white board would be cool. Also, some sample interview role playing with be great.
Yeah, I have a video coming out in a little that will address the future of this project.
Good channels are often underrated man! I am glad I explored your channel and got a ton of quality information, hope your channel grows!!
Wow, this video really opened a new way of looking at the problems. Thank you and keep making videos!
sure
Man, your videos are really helpful. The way you explain it, your passion and your attitude is pure gold.
Thanks! you could always try the 5 day free mini course for some awesome content - backtobackswe.com/
Really awesome videos, watched most of your DP's, annoyed my friends sharing them all the links. Hope you & your channel achieve greater success!
thanks for sharing us, best thing anyone can do to help. And thanks, we are working on it.
This was great. First time in your channel mate, and you have already earned another subscriber...
Keep on making such videos, that'll help us looking at such algorithms from another perspective, and help you learn more as you make them! Thanks!
V TV FC hmm
This now my favorite channel for Data structures. Thank you for such amazing videos :)
sure
try mycodeschool channel
I love the clarity of your video! Thank you very much!
sure
Thank you for providing a template for the backtracking problems. As an aspiring software engineer, this helps a lot!
great to hear.
This has been SO helpful. Thank you thank you thank you for breaking it down in a way that makes it super easy to understand!
Thank you so much, really clarified my doubts about the usefulness of backtracking. My university teacher should be learning from you how to explain algorithms.
nice
Nice video man. I like your style of teaching, this is the first ever video of yours that I've watched and I like the casual style of teaching. It would be great if you could make videos that emphasize the guiding principle behind solving a problem and then share ways to attack the problem as well, in a direct way. Thanks and Cheers!
These three keys are very useful inorder to find a pattern to solve any backtracking the problem !...Thanks a Ton bro !
sure
You are not teaching, you healing. The way you approach and progress towards the solution, putting yourself in our shoes like "how easy/difficult it would be to understand what I'm saying". As if you totally understand the situation we are in. I bow for that empathy! 👐🙏
thanks haha
This is such a simplified approach to backtracking! Hope you start making videos again!
This video is great! Very well explained, and I loved the editing :) Awesome job dude!
Beautiful explanation. Almost feels criminal that it isn't a paid course or content..I struggled for sometime on most DP tutorials mostly because they were focusing on what to do and not why.
hahah, I do have a paid course that I'm growing right now. But yeah, all the videos here are the property of the internet and mankind now.
Your explanation is seriously good. Keep up the videos. Would love to see your channel grow
thanks, me too
you're a legend mate..better explanations than 95% of my uni profs
Give me 1-3 years...the legend will continue.
This mental model was great to learn! Thank you for the quality.
0 Dislikes tells that how much people like the way you explain.
Aw, thanks haha
This is how you become humble and knowledgable at the same time
haha nice
Best explanation I've found so far. Thank you man
THIS MAN IS A LITERAL LEGEND. May you be blessed with glory in all three worlds.
I am normal
@@BackToBackSWE hahahaha ik ik. honestly thanks for giving back to the community.
first time on this channel and subscribed it... Awesome way of teaching... Request to everyone: Share this video more nd moe
ha thanks, we have a course where I'm posting more videos like this, check it out
i didn't knw abt backtracking at all and zis helped me on understanding string permutation more. Soo thank you.
sure
Finally someone who could explain this to me in a way I actually understood...
ye
This consolidated my understanding of backtracking, thank you.
great.
this video is one of the best i have ever seen on teaching skills.
thanks
@@BackToBackSWE I today got placed at Wells Fargo and I am here to say thank you to you. From you, I have learned the most important technique that is how to approach a problem. Thanks again and keep sharing your knowledge
That was probably the best explanation of backtracking out there . Thanks a lot!
Thank you, glad you liked it 😀
Do check out backtobackswe.com/platform/content
and please recommend us to your family and friends 😀
Very nicely done. One request. When you screen reference the previous related videos, could you add a link in your intro text along with the other excellent links you provide...I'm reviewing them all in sequence to help me work through these problems and leetcode questions.
Your explanations provide great insights and I REALLY appreciate all of the effort you have placed in these discussions. Thank you!
yeah sure
Thank you once again. This was a cool way to think about backtracking problems. I personally feel some of the dp and backtracking questions draw a lot from mathematical induction and the ability to be able to express a question recursively like you said.
I will practice a couple and see if I have a better hang of these problems.
Thanks a ton for doing such a great job. Love your videos.
sure
I love you. Thank you so much. The last minute of reflection is all I need for the day. Thank you, thank you, thank you.
Happy Holidays! Really glad to help 🎉 Do you know about the 5 Day Free Mini Course? Check it out here - backtobackswe.com/
Thanks for the video. Really helpful for my efforts to pass an algorithms and data structures class in undergrad CS.
Excellent video! Thank you for sharing. I love your explanation towards the end and could not agree more.
Glad you enjoyed it!
Appreciate your work, man! Thank you!
sure
Not the hero we deserve, but the hero we need...
lol thx
*3 Keys: Choice, constraints, and goal.
*Choice - Think about the choice you are making at every step
*Constraints - What rules the choice must follow
*Goal - What base case needs to be reached?
*Backtracking is essentially just recursing on your decision if you screw up.
*Look for words like "generate all" and "compute all". That will indicate backtracking is a good idea.
Thanks for the video!
Happy Holidays 🎉 Thank you for your kind words! We'd love to offer you a 40% Off our exclusive lifetime membership just use the code CHEER40 - backtobackswe.com/checkout?plan=lifetime-legacy&discount_code=CHEER40
you're just amazing I love how you went for it! keep it up !!!!! your channel is a treasure
Means a lot
Hey man, recently found your channel and I absolutely love your teaching style. The quality of the videos have been getting better, too. I've been trying to practice more leetcode for interviews and whatnot, but since I've only recently started, I'm struggling quite a bit. When you see a problem that you do not understand or just have no idea how to solve at all, at what point do you give up and look at the answer?
Thanks, thanks, and it depends greatly. If I know the problem class I'll keep going. But if I am just 100% stumped for 20 minutes, with no leads to start (which that still happens), only then do I look at the answer. And then there are times I look at the answers very quickly, just to get a mass of questions in. Ummm...yeah this really depends.
It's a really good brief! Thanks for the video !
Thank you for the video! This was really helpful and made it easier for me to understand Backtracking!
Love the effects in the videos, helps us understand
great
I like ur way of thinking and asking questions during solve any problem
This guy is helping us learn while also practicing to become a weather man
Love your videos man, you're a real one!
Awesome thank you!! Greatly explained generalization.
I don't know whether I told you this before, but your video are reallllllllllly great!
haha thanks
Thank you! All your explanation help my exam!
sure
Make the n-queen problem again please. U really helped me understand dynamic programming, thank you so much!
Yeah I think I can explain it better today vs 1 year ago
Thank you for explaining this so well. Crystal clear.
Thank you, glad you liked it 😀
Do check out backtobackswe.com/platform/content
and please recommend us to your family and friends 😀
Absolutely stellar video and explanation of backtracking. Thank you.
Happy Holidays! Really glad to help 🎉 Do you know about the 5 Day Free Mini Course? Check it out here - backtobackswe.com/
Lol "i don't think that video is that good..." nah YOU ARE AMAZING MAN IF I PASS MY INTERVIEW ON FRIDAY A LARGE CREDIT WILL BE TO YOU. Thank you! ❤️
Thank you dear man for your clear explanations! Hello from Russia!
Thank you very much really. All the best
When RUclips suggested this video for Backtracking, I was wondering why Lewis Hamilton is explaining Backtracking 🤔 😳.
But you certainly didn't disappoint. Thanks for the great explanation 👍
haha! thanks. Hoping to see Lewis back on the f1 track
Subscribe to our DSA course with a flat 30% discount for some amazing content b2bswe.co/3HhvIlV
"I kind of just went for it ..and talked a lot " . That's honestly funny.. nice videos my friend
yeah lol
I like your content. I appreciate your enthusiasm from your voice and smile.
Thank you! Please enjoy a special code from us - backtobackswe.com/checkout?plan=lifetime-legacy&discount_code=IneluctableConcomitant 🎉
Loved your teaching style.. 😍 from india
wassup
Nice breakdown generally on how to think about a solving problem.
This was really helpful, thank you very much
Hey Ben , your explanation is awesome, can u please explain optimal game strategy question. From recursion to DP.
yeah, I may throw that into this site: twitter.com/thebigoguide
def solve(row, col, board):
n = len(board)
m = len(board[0])
# Base case: if we've reached the end of the board
if col == m:
return True
# Recursive case: try placing a value in the current cell
for value in range(1, 10): # Try values from 1 to 9
board[row][col] = value # Place the value in the current cell
if validPlacement(row, col, board): # Check if the placement is valid
# If the placement is valid, recursively solve for the next cell
if solve(row, col + 1, board):
return True
# If the placement is not valid or does not lead to a solution, backtrack
board[row][col] = 0 # Reset the cell to empty
# If no value leads to a solution, return False
return False
def validPlacement(row, col, board):
# Implement the logic to check if placing a value at the given row and column is valid
pass # Placeholder, replace with your implementation
# Example usage:
# Initialize a 9x9 Sudoku board (as a list of lists)
board = [
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0]
]
# Start solving from the top-left corner (row=0, col=0)
if solve(0, 0, board):
print("Solution found:")
for row in board:
print(row)
else:
print("No solution exists.")
i think theres an error like we need to reset if placement is not valid here i see that its directly outside the fore loop means we reset every cell to 0 once every iteration s are done
please corect me if im wrong
You have remarkable editing skills!
thanks
Thanks for the awesome video! You got a subscriber :D
nice, score! lol
dude I like how you explain your ideas, it's how I do it in my head, so I get it. Subscribed, nice content.
13:13 Gold.
👀👀👀
You good sir are my hero!
You are so accurate on logic !!
thx
Thank you A LOT!
sure
You could solve the Sudoku with DP, it would be faster: O(n*m), where n and m are the height and width of the grid.
ok
2:53 I love that we all think as a first about a double for loop for each coding question :))
THIS VIDEO IS EVERYTHING
o k
appreciate all that you do!
great explaination , really really helpful , thanks a lot!
sure
You are a greatttttt teacher , Thankyou so much
When you “reset” the choice with board[row][col]=EMPTY_ENTRY, shouldn’t this line be under an else block inside the for loop? Currently you have it outside the for.
it solved many problems thanks
One thing missing from this video is explaining why the time complexity is what it is, what is the space complexity and, most importantly, WHY?
Yeah
Thought process, superb
Can you always avoid backtracking and instead use simple recursion with an "if statement" to "stop yourself making mistakes"? E.g, I recurse every possibility and if a possibility doesn't' work out you just ignore it..?
im not sure - maybe not? dont know
Great video, thank you.
sure
You are real! That's all I can say! stay real man!!!
thx.
Thanks man, this help me solve leetcode 79 word search
excellent
I'm wondering if you could store the decision space in an array or hashset. So each stack frame would only have to loop through a _maximum_ of N choices, but a minimum of 1 choice.
could you elaborate?
If you're at cell (3,2) - 3rd row, 2nd column. You already know placements (0,2), (1,2), (2,2) and similarly (3,0), (3,1). So you need not search for the decision space that is already allocated to those cells. This optimisation would take up a lot of space though - so it may not be worth it.