House Robber III - Tree - Leetcode 337

  Рет қаралды 41,715

NeetCode

NeetCode

Күн бұрын

Пікірлер: 91
@NeetCode
@NeetCode 3 жыл бұрын
🌲 Tree Playlist: kzbin.info/www/bejne/hZ-2n2WOerZng7s
@alokesh985
@alokesh985 3 жыл бұрын
Out of all the leetcode solutions on KZbin, you write the cleanest, most understandable code. Please keep up the excellent work
@prithulbahukhandi1714
@prithulbahukhandi1714 3 жыл бұрын
Not everyone has the ability to teach brother you have it. keep enlightening us. !!
@tonymontana9221
@tonymontana9221 9 ай бұрын
I just want to add a comment for people who might not understand thoroughly. We are not simply skipping child nodes and reaching grandchild nodes. The max() here means we are carried over the largest value of the subtree with the grandchild node as the root for each grant child root. That is amazing. Thank a ton
@ArvindKonda
@ArvindKonda 2 жыл бұрын
Love it ! Elegant and the way you write your code with few lines at the bottom , few lines in the middle like finishing a puzzle. It's beautiful.
@raghavendharreddydarpally2125
@raghavendharreddydarpally2125 3 жыл бұрын
your way of solving problem especially building from scratch and your explanation is very clear and good .please do more videos on most solved leetcode problems.
@lizgarcia4626
@lizgarcia4626 Жыл бұрын
It is incredible how comprehensible and organized your explanations and solutions are. Thank you so much!
@boopeshshanmugam3436
@boopeshshanmugam3436 4 ай бұрын
There is so much work behind the video of choosing the right test cases to give the explanations in the best way. Thanks for your efforts. You rock !
@VY-zt3ph
@VY-zt3ph Жыл бұрын
This playlist is absolute gold. Don't know what I will expect in DP and Graphs.
@youlihanshu
@youlihanshu 2 жыл бұрын
I really think whoever proposes this problem is definitely a genius! Such a problem with dfs, binary tree and dp, what a combination!
@eyou2813
@eyou2813 3 жыл бұрын
Im dying at the corresponding number of Macauley Culkins in your House Robber series thumbnails, its just *chefs kiss*
@shuhaoliang144
@shuhaoliang144 2 жыл бұрын
I feel that this problem requires the combination of Dynamic Programming and DFS (Recursion), and you explained this problem very clearly. Even though I am using Java and you are using Python, I followed your logic and did this problem correctly. Thank you very much for your fantastic teaching and explanation!
@aritralahiri8321
@aritralahiri8321 3 жыл бұрын
Very Nice and Simplified explanation . Really appreciate your work.
@ashishm8850
@ashishm8850 3 жыл бұрын
Beautifully explained. Thanks!
@lonen3rd
@lonen3rd Жыл бұрын
I did it using bfs, borrowing from the solution to House Robber II from collections import deque class Solution: def rob(self, root) -> int: def bfs(): rob1, rob2 = 0, 0 queue = deque() queue.append(root) while queue: n = 0 for i in range(len(queue)): # level order node = queue.popleft() n += node.val if node.left: queue.append(node.left) if node.right: queue.append(node.right) temp = max(rob1 + n, rob2) rob1 = rob2 rob2 = temp return rob2 return bfs()
@sushantrocks
@sushantrocks 3 жыл бұрын
Bfs, store sum at each level and then just find max using alternate cells (0,2,4,...) (1,3,5,...). O(n) mem and O(n) time.
@prathamj2215
@prathamj2215 3 жыл бұрын
This is what I thought as well
@alokesh985
@alokesh985 3 жыл бұрын
This won't work for something like [2, 1, 3, null, 4]. Answer should be 7. This approach will return 6
@sushantrocks
@sushantrocks 3 жыл бұрын
@@alokesh985 nice one
@aayush9080
@aayush9080 Жыл бұрын
Great Explaination. Loved it. Have been watching your videos for the past 2 months. This explaination forced me to do away with my laziness and comment.
@dhaanaanjaay
@dhaanaanjaay 7 ай бұрын
I tried level order traversal and built an array list and then ran house robber 1 approach but it did not solve the edge cases. I hope one day I would be able to solve the way you do it!. Would you be able to explain what was your thought process to come to this solution
@yicheng7712
@yicheng7712 3 жыл бұрын
Thanks so much! Ur videos have been helped me a lot. #1 channel on my list for leetcode study. Looking forward to see more of your videos!
@shivambaghel9668
@shivambaghel9668 2 жыл бұрын
I start watching your channel when it was at 90k and now it's 95k ,(in approx. 1 month) ..Congratulation
@MsSkip60
@MsSkip60 3 жыл бұрын
Dude, this is some rockstar level content really. I can’t tell how grateful I’m and how motivating these are! Thanks a lot!
@arenmkhoyan
@arenmkhoyan 11 ай бұрын
Very nice, thanks
@SairamDasari2000
@SairamDasari2000 9 ай бұрын
Are you fr? I thought I couldn't solve this problem until I saw your explanation. Thanks for making an impact 🙌
@thanirmalai
@thanirmalai 5 ай бұрын
Amazing solution
@begula_chan
@begula_chan 7 ай бұрын
Thank you very much! This was really good
@anthonyuccello1458
@anthonyuccello1458 2 жыл бұрын
This channel is the real leetcode premium
@RobinHistoryMystery
@RobinHistoryMystery 7 ай бұрын
I tried using House Robber I + BFS for this problem one, two = 0, 0 queue = [root] while queue -> num = 0 for _ in queue -> node = queue.popleft() queue.push(node.left) queue.push(node.right) num += node.data one, two = two, max(one + num, two) return two
@kvtys
@kvtys Ай бұрын
not enough circling at 8:00, failed to understand
@skylyyun
@skylyyun Жыл бұрын
Thanks! very great explanation!
@amitarya4894
@amitarya4894 Ай бұрын
Thank you
@HarshaVardhan-pj5gp
@HarshaVardhan-pj5gp Ай бұрын
You are just amazing 😭❤️
@zacyou4220
@zacyou4220 2 жыл бұрын
what will be the time complexity and space complexity of this algo?
@___vandanagupta___
@___vandanagupta___ Жыл бұрын
Very well explained!!! .
@ladanafar5917
@ladanafar5917 3 жыл бұрын
Please can you increase the frequency i.e can you do more questions?
@ananya___1625
@ananya___1625 2 жыл бұрын
Great explanation!!!
@BarneyBing883
@BarneyBing883 2 жыл бұрын
I was asked this question in an interview and I failed and I thought that it would use some complex data structure and algorithm, but your video proved me wrong! 😂 But honestly, thank you so much for explaining this!
@shaksham.22
@shaksham.22 2 жыл бұрын
What interview did you have?
@BarneyBing883
@BarneyBing883 2 жыл бұрын
@@shaksham.22 Rippling
@ambarishdashora5440
@ambarishdashora5440 3 жыл бұрын
thank you so much bro. You gave an excellent explanation.
@anshhchaturvedi1155
@anshhchaturvedi1155 Жыл бұрын
This approach is giving TLE in C++
@anshhchaturvedi1155
@anshhchaturvedi1155 Жыл бұрын
Here's the code class Solution { public: pair help(TreeNode* root) { if(!root) return {0,0}; if(!root->left && !root->right) return{root->val,0}; return {root->val+help(root->left).second+help(root->right).second,(max(help(root->left).first,help(root->left).second)+max(help(root->right).first,help(root->right).second))}; } int rob(TreeNode* root) { return max(help(root).first,help(root).second); } }; It'd be great if someone could help
@tarunsahu1366
@tarunsahu1366 3 ай бұрын
@@anshhchaturvedi1155 class Solution { public: vector func(TreeNode* root){ if(root == NULL) return {0, 0}; vector leftPair = func(root->left); vector rightPair = func(root->right); int withRoot = root->val + leftPair[1] + rightPair[1]; int withoutRoot = max(leftPair[0], leftPair[1]) + max(rightPair[0], rightPair[1]); return {withRoot, withoutRoot}; } int rob(TreeNode* root) { vector result = func(root); return max(result[0], result[1]); } };
@ritikkhatri
@ritikkhatri 3 жыл бұрын
such clear explanation
@yinglll7411
@yinglll7411 2 жыл бұрын
Thank you for the great explanation!
@s.z.7938
@s.z.7938 2 жыл бұрын
Amazing, really helpful, thank you!!!
@aditijain2448
@aditijain2448 Жыл бұрын
Will this solution be enough in an interview
@hoanganhtu9090
@hoanganhtu9090 3 жыл бұрын
great explaination
@edwardteach2
@edwardteach2 3 жыл бұрын
U a God
@annoyingorange90
@annoyingorange90 2 жыл бұрын
BEAUTIFUL SOLUTION
@danielsun716
@danielsun716 2 жыл бұрын
one question: when should we build a new nested funtion?
@jorgemejia1586
@jorgemejia1586 2 жыл бұрын
when you wanna pass a parameter that isn't given by the parent function
@danielsun716
@danielsun716 2 жыл бұрын
@@jorgemejia1586 But why can't we just set an variable, why should use a function? like we can just set n = 0 to change n why should we do it like def dfs(n) to change n?
@SmoothCode
@SmoothCode 3 жыл бұрын
what does leftPair[1] and rightPair[1] even mean? The left most left node at the end of the binary tree?
@rohithv63
@rohithv63 3 жыл бұрын
it represents the maximum score the robber can get if he decides not to rob the root node
@nikhilchauhan5837
@nikhilchauhan5837 3 жыл бұрын
Awesome content. can you cover some segment tree problems in future videos
@andreytamelo1183
@andreytamelo1183 2 жыл бұрын
Thanks!
@midhileshmomidi3120
@midhileshmomidi3120 2 жыл бұрын
For this input [2,1,3,null,4] ans is given as 7. Isn't it 6 tree : 2 1 3 4
@binit1992
@binit1992 2 жыл бұрын
Can we solve it using BFS ?
@ajinkya-wasnik
@ajinkya-wasnik Жыл бұрын
beautiful
@sangamsamdarshi4634
@sangamsamdarshi4634 Жыл бұрын
recursion makes problems easy af
@midhileshmomidi3120
@midhileshmomidi3120 2 жыл бұрын
Can we do level order traversal on this
@sindhu5840
@sindhu5840 Жыл бұрын
for a skewed tree, level order traversal might not work. eg. 4 - 1 - 2 - 3 . level order will retun max 6 (4+2). but the robber can rob 4 and 3 and make a profit of 7
@joydeeprony89
@joydeeprony89 Жыл бұрын
Smooth like Vaseline.
@shaharrefaelshoshany9442
@shaharrefaelshoshany9442 3 жыл бұрын
the most perfect ever.
@adityarathi3420
@adityarathi3420 2 жыл бұрын
Thanks you sir! :-)
@asdfasyakitori8514
@asdfasyakitori8514 2 жыл бұрын
Nice thumbnail
@kwaminaessuahmensah8920
@kwaminaessuahmensah8920 3 жыл бұрын
god right here people
@whatuphere
@whatuphere 2 ай бұрын
Prabhu to the rescue!! _/\_
@PoojaMehta271
@PoojaMehta271 3 жыл бұрын
Is it possible to solve this in an interview without coming across it even once? 🧐
@CertifiedDeadMemes
@CertifiedDeadMemes 3 жыл бұрын
yeah
@laplacesdemon8140
@laplacesdemon8140 3 жыл бұрын
OMG ! genius
@jorgemejia1586
@jorgemejia1586 2 жыл бұрын
bro i thought you could use bfs on this one
@sourav_ghosh
@sourav_ghosh 3 жыл бұрын
Picasso 🤏🤏
@skmdmobinulislam3904
@skmdmobinulislam3904 2 жыл бұрын
when a teacher unlocks his god-level mode 🤯
@dhiwakarna8509
@dhiwakarna8509 Жыл бұрын
Why are we helping the thief?
@coldstone87
@coldstone87 2 жыл бұрын
why cant you chose 4 and 100? They aren't directly connected. This is an ambigious question with no solution and you just wrote a solution of your own version of question.
@shadowsw8020
@shadowsw8020 4 ай бұрын
'The thief realized it forms a binary tree' wtf is this shit lmao
@nikhilgoyal007
@nikhilgoyal007 Жыл бұрын
It did not pass for me. I copied it exactly but does not pass :( class Solution: def rob(self, root: Optional[TreeNode]) -> int: # return pair: [withroot, withoutroot] def dfs(root): if not root: return [0, 0] leftPair = dfs(root.left) rightPair = dfs(root.left) withRoot = root.val + leftPair[1] + rightPair[1] withoutRoot = max(leftPair) + max(rightPair) return [withRoot, withoutRoot] return max(dfs(root))
@amberfatima2777
@amberfatima2777 Жыл бұрын
rightPair = dfs(root.left) this should be rightPair = dfs(root.right)
@WowPlusWow
@WowPlusWow 3 жыл бұрын
🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻
@alishan9354
@alishan9354 3 жыл бұрын
please start coding in c++
@adityarathi3420
@adityarathi3420 2 жыл бұрын
class Solution { public: map map ; int rob(TreeNode* root) { if(not root) return 0 ; if(map.count(root)) return map[root] ; int withoutRoot = rob(root->left) + rob(root->right) ; int withRoot = root->val ; if(root->left) withRoot += rob(root->left->left) + rob(root->left->right) ; if(root->right) withRoot += rob(root->right->left) + rob(root->right->right) ; return map[root] = max(withRoot,withoutRoot) ; } };
@shivansh-gup
@shivansh-gup 2 жыл бұрын
@@adityarathi3420 Hi , why is memoization needed ??? what is the repeated step here ?
@adityarathi3420
@adityarathi3420 2 жыл бұрын
@@shivansh-gup without memoization i will getting tle on leetcode.
@shivansh-gup
@shivansh-gup 2 жыл бұрын
@@adityarathi3420 yeah I got the same but I used to think memoization is applied when we reapeatedly reach a given state in recursion. In this however we will traverse every node for once and there is no repeated state so why is there a need to memoize ? am I missing something ?
@officialnepalcricket
@officialnepalcricket Жыл бұрын
you are making it more complicated. You also draw too much and say tooooooo much. provide the idea first, then try to explain. This will make sense then. Otherwise, you are just trying to explain without giving how to do it and at last you tell this is the way you do it. That is not helping at all.
@akashdey5637
@akashdey5637 6 ай бұрын
why is BFS not working here? given below is my code: if not root: return root q = deque([root]) res = [] while q: val = [] for i in range(len(q)): node = q.popleft() val.append(node.val) if node.left: q.append(node.left) if node.right: q.append(node.right) res.append(val) rob1, rob2 = 0, 0 for i in range(len(res)): if not i % 2: rob1 += sum(res[i]) else: rob2 += sum(res[i]) return max(rob1, rob2)
@salahabdelrahman7820
@salahabdelrahman7820 2 ай бұрын
Great Explaination
LeetCode was HARD until I Learned these 15 Patterns
13:00
Ashish Pratap Singh
Рет қаралды 577 М.
How To Choose Mac N Cheese Date Night.. 🧀
00:58
Jojo Sim
Рет қаралды 88 МЛН
Симбу закрыли дома?! 🔒 #симба #симбочка #арти
00:41
Симбочка Пимпочка
Рет қаралды 4,4 МЛН
Jump Game - Greedy - Leetcode 55
16:28
NeetCode
Рет қаралды 255 М.
Redundant Connection - Union Find - Leetcode 684 - Python
16:04
Dynamic Programming isn't too hard. You just don't know what it is.
22:31
DecodingIntuition
Рет қаралды 197 М.
House Robber -  Leetcode 198 - Python Dynamic Programming
10:35
LeetCode is a JOKE with This ONE WEIRD TRICK
4:54
AlgoMonster
Рет қаралды 89 М.
How I Failed the Google Coding Interview (and lessons I learned)
14:24
House Robber III 🔥| Leetcode 337 | Binary Tree
12:21
Ayushi Sharma
Рет қаралды 5 М.
Binary Tree Maximum Path Sum - DFS - Leetcode 124 - Python
15:19
How To Choose Mac N Cheese Date Night.. 🧀
00:58
Jojo Sim
Рет қаралды 88 МЛН