Maximum Product Sub-array (LeetCode 152) | Full Solution with animations and proof | Simplified

  Рет қаралды 38,859

Nikhil Lohia

Nikhil Lohia

Күн бұрын

Пікірлер: 127
@nikoo28
@nikoo28 6 ай бұрын
As of this writing LeetCode added a new test case which cause the above code to fail. The logic is still correct though. The test case fails because of overflow error. With just a small fix, the code still works. Have a look at the updated code on my Github link :)
@LaughThyself
@LaughThyself 5 ай бұрын
[0,10,10,10,10,10,10,10,10,10,-10,10,10,10,10,10,10,10,10,10,0] this is the testcase for which it fails; can you tell what the fix is sir?
@nikoo2805
@nikoo2805 5 ай бұрын
@@LaughThyselfthat is what I exactly did in the updated code. Did you have a look?
@LaughThyself
@LaughThyself 5 ай бұрын
@@nikoo2805 yesterday I had removed what I thought was redundant, 190/191 test cases then passed, now all did! thank you
@katerghost642
@katerghost642 5 ай бұрын
@@LaughThyself bhai iska answer mille toh reply krdena salla do ghanta ho gya h
@unknownman1
@unknownman1 5 ай бұрын
@@katerghost642 class Solution { public int maxProduct(int[] nums) { long leftproduct = 1; long rightproduct = 1; long ans = nums[0]; for(int i=0; i
@sayedmahmudulalam2738
@sayedmahmudulalam2738 Жыл бұрын
This is the simplest and most intutive solution.
@yashyadav7017
@yashyadav7017 6 ай бұрын
bhai tum kya bande ho yaar… when other top teachers and youtubers fail to explain the hardest problems, you explain those problems so easily somehow….. Man you deserve so much appreciation… Great work bhai..so much inspired by you… Really top-notch explanations.
@nikoo28
@nikoo28 5 ай бұрын
that is so kind of you...please share and support as much as you can :)
@ashmita_shrivastava
@ashmita_shrivastava 2 күн бұрын
Very clean , clear and simple explanation...LOVED IT
@jatinkumar4410
@jatinkumar4410 8 ай бұрын
amazing explanation... Thank you
@andreabad3518
@andreabad3518 10 ай бұрын
I was really struggling to understand some other solutions for this problem that used dynamic programming, but you really made it simple to understand! Thanks!
@MedhatR-do9le
@MedhatR-do9le 2 ай бұрын
the way you explain begining of cases like, all postive to odd and even negatives unitl the end is awesome.. the best simple explantaion of that algorithm.
@subhadippahari185
@subhadippahari185 Жыл бұрын
What an explanation. Really mind-blowing. Saw other videos on the same topic, but this is a really whole different level of logic.
@ghanashrim2839
@ghanashrim2839 Жыл бұрын
Your explanations are so on point yaar... I've been binge-watching all your videos...! Please make more.
@nikoo28
@nikoo28 Жыл бұрын
Thank you so much 😀
@MinhLe-ks5en
@MinhLe-ks5en 9 ай бұрын
This is genius. You deserve more likes and more subscribers. I love your systematic way of explaining the reasoning.
@nikoo28
@nikoo28 5 ай бұрын
Glad you think so!
@Max-tq1ig
@Max-tq1ig Жыл бұрын
Hi, Nikhil! I understand the code and how can you get the answer by using the two comparisons from right and left, but I don't get the logical idea of pointing out that you need to remove the middle number at minute 6:26. Is it just an example of what should we get if you keep with odds numbers instead of an even; or just the idea of having more numbers in general? I don't understand x__x It's not something to will do automatically by following the code?
@nikoo28
@nikoo28 Жыл бұрын
you don't have to remove the middle number, we are just trying to get the maximum product. 2 negatives will give you a positive number, but 3 negatives will give you a negative number again.
@vineetkumar2899
@vineetkumar2899 Жыл бұрын
the way you explain things are just Awesome.
@tripletgamingbuddies5365
@tripletgamingbuddies5365 4 ай бұрын
for those whose code fails at 191 testcase use the below code class Solution { public int maxProduct(int[] nums) { double maxpro=nums[0],right=1,left=1; for(int i=0;i
@lifesucks5091
@lifesucks5091 2 ай бұрын
very good explanation.This channel's gonna explode with subscribers pretty soon
@NikhilRaj-wv6nf
@NikhilRaj-wv6nf 3 ай бұрын
you are so good man, I used to watch Striver's lecture but for revision Im watching you:)
@faizuddin4032
@faizuddin4032 11 ай бұрын
Very clean , clear and simple explanation.
@hoddybhaba6704
@hoddybhaba6704 Жыл бұрын
Fantastic explaination👏👏👏You deserve more likes, more views and definitely more subscribers!!!
@tejasavhad4010
@tejasavhad4010 Жыл бұрын
Underrated channel.
@akhintheruvath
@akhintheruvath 5 ай бұрын
Crisp and clear explanation. Thank you bro.
@dipteshdeore2935
@dipteshdeore2935 7 ай бұрын
Clean , crisp & most underrated !
@abdulgaffarabdulmalik4333
@abdulgaffarabdulmalik4333 Жыл бұрын
My question is, why does it work?
@nikoo28
@nikoo28 Жыл бұрын
please elaborate...
@billyfigueroa1617
@billyfigueroa1617 10 ай бұрын
😂
@unemployedcse3514
@unemployedcse3514 7 ай бұрын
answer to ur question is if u observe carefully traversing from left and right indirectly we are calculating product of all sub array and each time storing max subbarray product
@amitmandal5842
@amitmandal5842 Жыл бұрын
Excellent explanation. I mean, you made question easy.. valaaaah😊
@nikoo28
@nikoo28 Жыл бұрын
Glad to hear that
@varunupadhyay2488
@varunupadhyay2488 8 күн бұрын
Your explanation is super smooth Sir! One request: please share the code step-by-step instead of showing it all at once. It makes following along much easier.
@nikoo28
@nikoo28 7 күн бұрын
I want to focus on problem solving rather than writing the code line by line. There are so many AI bots available that can explain the code for you :)
@likhithadoddi4885
@likhithadoddi4885 3 ай бұрын
Sir your explanation is awesome 😎
@harshithreddy-w2g
@harshithreddy-w2g 10 ай бұрын
this is the best simple solution even the editorial solution is nothing infront of this
@nikoo28
@nikoo28 9 ай бұрын
glad you feel that way!!
@CyberZeo
@CyberZeo 3 ай бұрын
Thank you so much for this simplest explanation
@samiramousaie1158
@samiramousaie1158 Жыл бұрын
your explanation is awesome. I totally understand it.
@nikoo28
@nikoo28 Жыл бұрын
Awesome, thank you!
@yashbhinwal2801
@yashbhinwal2801 Жыл бұрын
you did a great job explaining this concept, really helpful!!
@rajalakshmirajasekar260
@rajalakshmirajasekar260 Жыл бұрын
Bro ur explanation is awesome!! I am able to think the flow of program and build the intuition easily.. one request bro Plz upload recursion vdos.. Thank you!!
@nikoo28
@nikoo28 Жыл бұрын
i have made several videos that use recursion. Check out the basics here: kzbin.info/www/bejne/fIW3eZ6jo9utoq8
@stanislavmozolevskiy8346
@stanislavmozolevskiy8346 7 ай бұрын
I do really like your solution, it is so much easier to understand. Thank you
@maggiesayabie
@maggiesayabie Жыл бұрын
I love your explanation!
@thakur6030
@thakur6030 3 ай бұрын
i think at 12:40 how do you update leftproduct to 2*3 it should be 1*nums[i] i.e-1*2=2 and same for the right product you doing is to be appered in the second iteration
@oknokok
@oknokok 5 ай бұрын
simple and exellent explanation
@jironymojirolamus913
@jironymojirolamus913 5 ай бұрын
Great explanation, thanks! I actually solved it in a similar way, but was unsure if it's a way to go since everyone is talking DP nowadays.
@avinashabhi95
@avinashabhi95 Жыл бұрын
Your explanation is superb. Subscribed.
@nikoo28
@nikoo28 Жыл бұрын
Welcome aboard! 😄
@vishwash7416
@vishwash7416 2 ай бұрын
Great explanation loved it
@RajiurRahman1
@RajiurRahman1 4 ай бұрын
Very simple and easy to understand. I was following another solution which I found a bit difficult to process. Thank you, keep up the good work.
@maherworld1
@maherworld1 Жыл бұрын
AWESOME! God bless u
@nikoo28
@nikoo28 Жыл бұрын
Thank you! You too!
@anonymous13378
@anonymous13378 6 ай бұрын
Too concise... Too the point.... Best explanation.... I can compare you with Striver... Though you are better than him at many places.... ❤
@nikoo28
@nikoo28 6 ай бұрын
Thanks for the view
@sripoojitha4887
@sripoojitha4887 11 ай бұрын
🎉Great Explaination 😮
@atifakhtar8828
@atifakhtar8828 2 ай бұрын
amazing video sir loved that
@abba5102
@abba5102 8 ай бұрын
Very good brother. Thank you.
@shreyanshgoel9757
@shreyanshgoel9757 7 ай бұрын
Your solution impies that ans subarray lie either in suffix or in prefix in non zero elements are present
@ashoksaipudi6999
@ashoksaipudi6999 Жыл бұрын
Hey actually its such a good explanation. but one mistake in explanation of 2nd testcase(2:10 min) there you don't take the contigous sub-array.
@nikoo28
@nikoo28 Жыл бұрын
i do take the contiguous sub-array
@shushanbalayan6267
@shushanbalayan6267 Жыл бұрын
Great explanation! Thank you
@240SX2pAc
@240SX2pAc Жыл бұрын
Wonderful solution, thank you
@sunshineandrainbow5453
@sunshineandrainbow5453 4 ай бұрын
OG teacher ❤
@KhyleSewpersaud
@KhyleSewpersaud 5 ай бұрын
fantastic solution
@cagarwal
@cagarwal Жыл бұрын
Can you explain why we need to start from both sides? I'm not able to see any benefit in starting from both sides as both eventually gives the same result.
@nikoo28
@nikoo28 Жыл бұрын
I don't understand...did you go though my complete video? It cannot be done if we don't go from both sides.
@hitghitg8747
@hitghitg8747 8 ай бұрын
Thank you my friend simple and easy
@yadneshraut6854
@yadneshraut6854 6 ай бұрын
Understood this logic but it fails at last testcase of leetcode 152 so please update the logic for the testcase and code too........!!! Thank you !!
@nikoo28
@nikoo28 5 ай бұрын
since I cannot edit the video, the code has been updated in the github link :)
@yadneshraut6854
@yadneshraut6854 5 ай бұрын
@@nikoo28 thank you sir !
@ashwinnair1035
@ashwinnair1035 9 ай бұрын
Great explanation sir
@user-he3hs6iy8o
@user-he3hs6iy8o 6 ай бұрын
it fails on the last test case on leetcode
@nikoo28
@nikoo28 5 ай бұрын
since I cannot edit the video, the code has been updated in the github link :)
@likhithadoddi4885
@likhithadoddi4885 3 ай бұрын
❤❤ love itt sir
@ankitvyas8534
@ankitvyas8534 6 ай бұрын
what if there is no positive element in the array?
@rahulchandak2772
@rahulchandak2772 5 ай бұрын
The logic sounds very simple but its difficult to understand for cases where the subarray does not contain the starting (leftmost) or the ending (rightmost) element. When the sub array is in between the array
@gopik6202
@gopik6202 6 ай бұрын
class Solution { public int maxProduct(int[] nums) { if (nums == null || nums.length == 0) { return 0; } int maxProduct = nums[0]; int currentMax = nums[0]; int currentMin = nums[0]; for (int i = 1; i < nums.length; i++) { if (nums[i] < 0) { // Swap currentMax and currentMin when encountering a negative number int temp = currentMax; currentMax = currentMin; currentMin = temp; } currentMax = Math.max(nums[i], currentMax * nums[i]); currentMin = Math.min(nums[i], currentMin * nums[i]); maxProduct = Math.max(maxProduct, currentMax); } return maxProduct; } } this is crt logic
@jd1901-s
@jd1901-s 4 ай бұрын
op explanation👌
@Rfcs1.6
@Rfcs1.6 4 ай бұрын
this code not run in leetcode
@AnzysViews
@AnzysViews Ай бұрын
thanks sir
@kesharwani.prashant
@kesharwani.prashant 11 ай бұрын
Looks like stiver copied your exact logic:) Thanks for explaining it so clearly !
@acceleratedofficial1576
@acceleratedofficial1576 7 ай бұрын
Failed or -1, 0,-3
@jiddu99
@jiddu99 6 ай бұрын
How ? It passed i got 0
@nikoo28
@nikoo28 5 ай бұрын
yes, it will pass...and you will get 0
@bharadwajrss8376
@bharadwajrss8376 Жыл бұрын
Hey... can we solve similar kind of question , finding maximum sum of subarray in given array. It usually solved using kadane's algorithm, but can we use this approach? Any way superb explanation ....
@nikoo28
@nikoo28 11 ай бұрын
give me a link to the question.
@tanugiri532
@tanugiri532 9 ай бұрын
Thankyou sir ❤
@jnayehsirine6222
@jnayehsirine6222 6 ай бұрын
I LOVE UR CHANEL
@powerwithin1367
@powerwithin1367 6 ай бұрын
wrong hai solution leetcode per 190 testcase fail ho raha
@unknownman1
@unknownman1 6 ай бұрын
they have updated the test cases.
@nikoo28
@nikoo28 6 ай бұрын
thanks for letting me know...I will update the code accordingly
@TanishaVarshney-ti9yl
@TanishaVarshney-ti9yl 9 ай бұрын
i understand the question and solution everything completely but on submitting it on leetcode after checking it twice it says wrong answer don't know why could you please tell me?
@nikoo28
@nikoo28 9 ай бұрын
Check out the complete code on my github. Link in description. That should give you a hint.
@TanishaVarshney-ti9yl
@TanishaVarshney-ti9yl 9 ай бұрын
@@nikoo28 i have tried that too but its also not working
@TanishaVarshney-ti9yl
@TanishaVarshney-ti9yl 9 ай бұрын
@@nikoo28please check it out class Solution { public int longestConsecutive(int[] nums) { int n = nums.length; int left=1; int right =1; int ans=nums[0]; for(int i=0;i
@Shrutimmmmm
@Shrutimmmmm 7 ай бұрын
U shud also include bruteforce solutions
@kishanmishra7301
@kishanmishra7301 Жыл бұрын
Hello, Your videos are so good and the way you explain the question as well as the the solution is very nice please keep making these videos I have one request can you please explain (3. Longest Substring Without Repeating Characters) this question of leetcode
@nikoo28
@nikoo28 Жыл бұрын
i added this problem to my list... :)
@AnishRanjan-p8u
@AnishRanjan-p8u Жыл бұрын
What if all elements are zero. Then it will fail?
@nikoo28
@nikoo28 Жыл бұрын
It won’t fail. The answer will be 0
@telugustatuscreator8327
@telugustatuscreator8327 10 ай бұрын
How are you getting ideas like this?
@nikoo28
@nikoo28 9 ай бұрын
practice, practice, practice and a lot of practice my friend :)
@RaniLink
@RaniLink 14 күн бұрын
This solution doesn't work for [-2, 0, -1]
@robertnant1264
@robertnant1264 9 ай бұрын
Hi! First of all thank you for the video. I'm having a hard time understanding why we have to calculate the product going from the left and also going from the right side of the array. Why is it that a traversal from start of array to its end does not work? Thank you in advance
@nikoo28
@nikoo28 9 ай бұрын
did you follow the explanation of the solution, or just looking at the code?
@VIJAYMAMORIA-c8m
@VIJAYMAMORIA-c8m 6 ай бұрын
Code Failed for nums =[0, 10, 10, 10, 10, 10, 10, 10, 10, 10, -10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0] Your code is also failing on LeetCode. This test case seems to be added recently. Due to overflow the answer is coming wrong. Even though leetcode has said the final answer is within the int range but the intermediate values in calculation are overflowing even the long range. Below code changes will fix the issue. long leftProduct = 1; long rightProduct = 1; long ans = nums[0]; leftProduct = (leftProduct == 0 || leftProduct < Integer.MIN_VALUE) ? 1 : leftProduct; rightProduct = (rightProduct == 0 || rightProduct < Integer.MIN_VALUE) ? 1 : rightProduct; return (int) ans;
@nikoo28
@nikoo28 6 ай бұрын
yes, that seems to be a newly added test case. I will update the code accordingly. Thanks for your contribution 😄
@sagarpanwar5722
@sagarpanwar5722 4 ай бұрын
best
@BABATUNDE-h7d
@BABATUNDE-h7d 6 ай бұрын
You wont pass 1 test case, for that use double instead of int
@nikoo28
@nikoo28 5 ай бұрын
i fixed the code in link
@alisheheryar1770
@alisheheryar1770 7 ай бұрын
Adios nikhil
@n1724k
@n1724k 4 ай бұрын
omg
@shivdeepbisurkar6526
@shivdeepbisurkar6526 Жыл бұрын
Hi, awesome explanation but it's failing for test case nums =[0, 10, 10, 10, 10, 10, 10, 10, 10, 10, -10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0] output=1981284352 using above logic. Expected =1000000000 (as per leetcode)
@nikoo28
@nikoo28 Жыл бұрын
my code passed on leetcode, did you check the one in the video description on github?
@VIJAYMAMORIA-c8m
@VIJAYMAMORIA-c8m 6 ай бұрын
@@nikoo28 Your code is also failing on LeetCode. This test case seems to be added recently. Due to overflow the answer is coming wrong. Even though leetcode has said the final answer is within the int range but the intermediate values in calculation are overflowing even the long range.
@nishantparaskar2048
@nishantparaskar2048 6 ай бұрын
@@VIJAYMAMORIA-c8m Did you resolve with any approch
@AnishRanjan-p8u
@AnishRanjan-p8u Жыл бұрын
What if all elements are zero. Then it will fail?
@AnishRanjan-p8u
@AnishRanjan-p8u Жыл бұрын
What if all elements are zero. Then it will fail?
@_shezzy
@_shezzy 7 ай бұрын
It will not fail
Maximum Product Subarray - Best Intuitive Approach Discussed
20:27
take U forward
Рет қаралды 248 М.
So Cute 🥰 who is better?
00:15
dednahype
Рет қаралды 19 МЛН
To Brawl AND BEYOND!
00:51
Brawl Stars
Рет қаралды 17 МЛН
The Dome Paradox: A Loophole in Newton's Laws
22:59
Up and Atom
Рет қаралды 1 МЛН
Maximum Product Subarray - Dynamic Programming - Leetcode 152
15:31
What is mathematical thinking actually like?
9:44
Benjamin Keep, PhD, JD
Рет қаралды 21 М.
Dynamic Programming isn't too hard. You just don't know what it is.
22:31
DecodingIntuition
Рет қаралды 215 М.
Kadane's Algorithm | Maximum Subarray Sum | Finding and Printing
20:09
take U forward
Рет қаралды 520 М.
Making an Algorithm Faster
30:08
NeetCodeIO
Рет қаралды 180 М.
So Cute 🥰 who is better?
00:15
dednahype
Рет қаралды 19 МЛН