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

Поділитися
Вставка
  • Опубліковано 23 гру 2024

КОМЕНТАРІ • 126

  • @nikoo28
    @nikoo28  5 місяців тому +10

    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 місяців тому +3

      [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 місяців тому +1

      @@LaughThyselfthat is what I exactly did in the updated code. Did you have a look?

    • @LaughThyself
      @LaughThyself 5 місяців тому +1

      @@nikoo2805 yesterday I had removed what I thought was redundant, 190/191 test cases then passed, now all did! thank you

    • @katerghost642
      @katerghost642 5 місяців тому +1

      @@LaughThyself bhai iska answer mille toh reply krdena salla do ghanta ho gya h

    • @unknownman1
      @unknownman1 4 місяці тому

      @@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 Рік тому +10

    This is the simplest and most intutive solution.

  • @yashyadav7017
    @yashyadav7017 6 місяців тому +5

    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 :)

  • @MedhatR-do9le
    @MedhatR-do9le 2 місяці тому +1

    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.

  • @andreabad3518
    @andreabad3518 10 місяців тому +2

    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!

  • @subhadippahari185
    @subhadippahari185 Рік тому +8

    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 Рік тому +5

    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!

  • @tejasavhad4010
    @tejasavhad4010 Рік тому +2

    Underrated channel.

  • @vineetkumar2899
    @vineetkumar2899 Рік тому +2

    the way you explain things are just Awesome.

  • @lifesucks5091
    @lifesucks5091 2 місяці тому

    very good explanation.This channel's gonna explode with subscribers pretty soon

  • @hoddybhaba6704
    @hoddybhaba6704 Рік тому +3

    Fantastic explaination👏👏👏You deserve more likes, more views and definitely more subscribers!!!

  • @jatinkumar4410
    @jatinkumar4410 8 місяців тому +2

    amazing explanation... Thank you

  • @NikhilRaj-wv6nf
    @NikhilRaj-wv6nf 2 місяці тому

    you are so good man, I used to watch Striver's lecture but for revision Im watching you:)

  • @faizuddin4032
    @faizuddin4032 10 місяців тому +1

    Very clean , clear and simple explanation.

  • @dipteshdeore2935
    @dipteshdeore2935 7 місяців тому

    Clean , crisp & most underrated !

  • @varunupadhyay2488
    @varunupadhyay2488 3 дні тому

    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  2 дні тому

      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 :)

  • @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

  • @tripletgamingbuddies5365
    @tripletgamingbuddies5365 4 місяці тому +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

  • @yashbhinwal2801
    @yashbhinwal2801 Рік тому +2

    you did a great job explaining this concept, really helpful!!

  • @Max-tq1ig
    @Max-tq1ig Рік тому +2

    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  Рік тому +2

      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.

  • @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!!

  • @maggiesayabie
    @maggiesayabie Рік тому +2

    I love your explanation!

  • @rajalakshmirajasekar260
    @rajalakshmirajasekar260 Рік тому +5

    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: ua-cam.com/video/FTTHkmnvzlM/v-deo.html

  • @akhintheruvath
    @akhintheruvath 5 місяців тому

    Crisp and clear explanation. Thank you bro.

  • @abdulgaffarabdulmalik4333
    @abdulgaffarabdulmalik4333 Рік тому +13

    My question is, why does it work?

    • @nikoo28
      @nikoo28  Рік тому +2

      please elaborate...

    • @billyfigueroa1617
      @billyfigueroa1617 10 місяців тому +1

      😂

    • @unemployedcse3514
      @unemployedcse3514 6 місяців тому

      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

  • @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.

  • @amitmandal5842
    @amitmandal5842 Рік тому +2

    Excellent explanation. I mean, you made question easy.. valaaaah😊

  • @samiramousaie1158
    @samiramousaie1158 Рік тому +1

    your explanation is awesome. I totally understand it.

    • @nikoo28
      @nikoo28  Рік тому

      Awesome, thank you!

  • @stanislavmozolevskiy8346
    @stanislavmozolevskiy8346 7 місяців тому

    I do really like your solution, it is so much easier to understand. Thank you

  • @RajiurRahman1
    @RajiurRahman1 4 місяці тому +1

    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.

  • @likhithadoddi4885
    @likhithadoddi4885 2 місяці тому

    Sir your explanation is awesome 😎

  • @oknokok
    @oknokok 5 місяців тому +1

    simple and exellent explanation

  • @sunshineandrainbow5453
    @sunshineandrainbow5453 4 місяці тому

    OG teacher ❤

  • @CyberZeo
    @CyberZeo 3 місяці тому

    Thank you so much for this simplest explanation

  • @maherworld1
    @maherworld1 Рік тому +2

    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

  • @avinashabhi95
    @avinashabhi95 Рік тому +1

    Your explanation is superb. Subscribed.

    • @nikoo28
      @nikoo28  Рік тому

      Welcome aboard! 😄

  • @sripoojitha4887
    @sripoojitha4887 11 місяців тому +1

    🎉Great Explaination 😮

  • @shushanbalayan6267
    @shushanbalayan6267 Рік тому +1

    Great explanation! Thank you

  • @cagarwal
    @cagarwal Рік тому +1

    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  Рік тому +2

      I don't understand...did you go though my complete video? It cannot be done if we don't go from both sides.

  • @vishwash7416
    @vishwash7416 2 місяці тому

    Great explanation loved it

  • @yadneshraut6854
    @yadneshraut6854 6 місяців тому +3

    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 місяців тому +2

      since I cannot edit the video, the code has been updated in the github link :)

    • @yadneshraut6854
      @yadneshraut6854 5 місяців тому +1

      @@nikoo28 thank you sir !

  • @240SX2pAc
    @240SX2pAc Рік тому +1

    Wonderful solution, thank you

  • @user-he3hs6iy8o
    @user-he3hs6iy8o 6 місяців тому +2

    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 :)

  • @abba5102
    @abba5102 8 місяців тому +1

    Very good brother. Thank you.

  • @ankitvyas8534
    @ankitvyas8534 6 місяців тому

    what if there is no positive element in the array?

  • @ashoksaipudi6999
    @ashoksaipudi6999 Рік тому +1

    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  Рік тому +1

      i do take the contiguous sub-array

  • @shreyanshgoel9757
    @shreyanshgoel9757 6 місяців тому +1

    Your solution impies that ans subarray lie either in suffix or in prefix in non zero elements are present

  • @atifakhtar8828
    @atifakhtar8828 2 місяці тому

    amazing video sir loved that

  • @KhyleSewpersaud
    @KhyleSewpersaud 5 місяців тому

    fantastic solution

  • @Rfcs1.6
    @Rfcs1.6 4 місяці тому

    this code not run in leetcode

  • @hitghitg8747
    @hitghitg8747 8 місяців тому

    Thank you my friend simple and easy

  • @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

  • @likhithadoddi4885
    @likhithadoddi4885 2 місяці тому

    ❤❤ love itt sir

  • @ashwinnair1035
    @ashwinnair1035 9 місяців тому

    Great explanation sir

  • @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 місяців тому +1

      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

  • @gopik6202
    @gopik6202 6 місяців тому +1

    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

  • @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.

  • @AnzysViews
    @AnzysViews Місяць тому

    thanks sir

  • @jd1901-s
    @jd1901-s 4 місяці тому

    op explanation👌

  • @kesharwani.prashant
    @kesharwani.prashant 11 місяців тому

    Looks like stiver copied your exact logic:) Thanks for explaining it so clearly !

  • @tanugiri532
    @tanugiri532 9 місяців тому

    Thankyou sir ❤

  • @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

  • @powerwithin1367
    @powerwithin1367 6 місяців тому +1

    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

  • @jnayehsirine6222
    @jnayehsirine6222 6 місяців тому

    I LOVE UR CHANEL

  • @telugustatuscreator8327
    @telugustatuscreator8327 10 місяців тому

    How are you getting ideas like this?

    • @nikoo28
      @nikoo28  9 місяців тому

      practice, practice, practice and a lot of practice my friend :)

  • @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?

  • @acceleratedofficial1576
    @acceleratedofficial1576 7 місяців тому +2

    Failed or -1, 0,-3

    • @jiddu99
      @jiddu99 6 місяців тому +1

      How ? It passed i got 0

    • @nikoo28
      @nikoo28  5 місяців тому

      yes, it will pass...and you will get 0

  • @kishanmishra7301
    @kishanmishra7301 Рік тому +2

    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... :)

  • @Shrutimmmmm
    @Shrutimmmmm 7 місяців тому

    U shud also include bruteforce solutions

  • @RaniLink
    @RaniLink 9 днів тому

    This solution doesn't work for [-2, 0, -1]

  • @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 місяців тому +1

    You wont pass 1 test case, for that use double instead of int

    • @nikoo28
      @nikoo28  5 місяців тому +1

      i fixed the code in link

  • @alisheheryar1770
    @alisheheryar1770 7 місяців тому

    Adios nikhil

  • @n1724k
    @n1724k 4 місяці тому

    omg

  • @shivdeepbisurkar6526
    @shivdeepbisurkar6526 Рік тому +1

    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  Рік тому +1

      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 Рік тому +1

    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