Product of Array Except Self (LeetCode 238) | Full solution with visuals | Study Algorithms

แชร์
ฝัง
  • เผยแพร่เมื่อ 27 พ.ย. 2024

ความคิดเห็น • 131

  • @sianwa11
    @sianwa11 ปีที่แล้ว +4

    Recently found your channel, whenever I don't understand neetcode solutions I come here. Thank you sir!

    • @nikoo28
      @nikoo28  ปีที่แล้ว +3

      @neetcode is also an amazing channel :)

    • @simiiv5021
      @simiiv5021 8 หลายเดือนก่อน +1

      Same!

  • @Caro-dh9ql
    @Caro-dh9ql 26 วันที่ผ่านมา

    Damn! You are the best man, there are many channels explaining this problem but you are able to transmit the thought process. Thank you!!!

  • @Sai-fn4lq
    @Sai-fn4lq ปีที่แล้ว +49

    Next level teaching sir !! You are literally a hidden gem!!

    • @nikoo28
      @nikoo28  ปีที่แล้ว +1

      glad you feel that way

  • @kaushit
    @kaushit 8 หลายเดือนก่อน

    I usually don't comment but this kind of video I see my hands automatically goes in comment section for comment.
    Thanks Nikhil you even demystified how dividing will give results, most of people don't know how dividing is giving the answer and thanks for explain postfix and prefix in detail.

  • @dinildenny2328
    @dinildenny2328 22 วันที่ผ่านมา +1

    your explanation is so crisp and clear

  • @alexandreneo888
    @alexandreneo888 26 วันที่ผ่านมา +1

    The best explanation I found in youtube!

  • @sivaramansankar7463
    @sivaramansankar7463 ปีที่แล้ว +4

    thanks for the lucid explanation , you're a hidden gem :) , you deserve way more subscribers

  • @ashishgoyal6256
    @ashishgoyal6256 ปีที่แล้ว +5

    Follow up: Can you solve the problem in O(1) extra space complexity? (The output array does not count as extra space for space complexity analysis.)

  • @nataliechan8535
    @nataliechan8535 11 หลายเดือนก่อน +1

    Your explanation is so clear! I like how you draw out everything to explain it! Thank you

    • @nikoo28
      @nikoo28  11 หลายเดือนก่อน

      The drawing really helps a lot 😄

  • @abhigoku2022
    @abhigoku2022 9 หลายเดือนก่อน +3

    Hi Sir,
    Eveytime I am searching for a leeetcode problem, I add your name in the suffix hoping you have done a video on it. I have understood each and every video that I have watched. Please do solve all the problems, that will be very helpful for people like me.

  • @clarice4072
    @clarice4072 8 วันที่ผ่านมา

    You have the best videos for leetcode

  • @TanujaNair-u2u
    @TanujaNair-u2u 4 หลายเดือนก่อน

    Thank you so much for explaining each line in a very simple manner.

  • @divyasingh6757
    @divyasingh6757 2 ปีที่แล้ว +6

    Here our space complexity can be reduced to O(1)..overall nice explanation

    • @thakur6030
      @thakur6030 2 หลายเดือนก่อน

      how can be s.c reduced to 0(1);

  • @Infinitycoder01
    @Infinitycoder01 ปีที่แล้ว

    I like your way of explaining the problem , with this i learnt to solve problems and as well as the way of explaining the code to others.
    It helped me a lot in my interview.Thank you so much.

    • @nikoo28
      @nikoo28  ปีที่แล้ว

      I try to approach the problem in a way as you would do in an interview. Glad it helps :)

  • @abhishekkeshri3974
    @abhishekkeshri3974 ปีที่แล้ว +2

    like always your explanation and video quality is awesome. i will try to share your videos as much as possible .

    • @nikoo28
      @nikoo28  ปีที่แล้ว +1

      So nice of you

  • @papayaw2920
    @papayaw2920 ปีที่แล้ว

    Keep going Nikhil, I was stuck and I was about to give up too. I feel taught today

    • @nikoo28
      @nikoo28  ปีที่แล้ว

      glad that was helpful

  • @abhishekanand8574
    @abhishekanand8574 9 หลายเดือนก่อน

    THANK YOU , I TRIED VERY HARD BUT COULD NOT SOLVED. YOU CLEARED IT IN A MIN .❤❤❤❤❤❤

  • @ManikantaN-l2q
    @ManikantaN-l2q ปีที่แล้ว +1

    class Solution:
    def productExceptSelf(self, nums: List[int]) -> List[int]:
    # Check if the input list is empty
    if not nums:
    return []

    length_of_nums = len(nums)
    # Initialize the result list with 1s
    result = [1] * length_of_nums
    product = 1
    # Calculate the product of all elements to the left of each element
    for index in range(length_of_nums):
    result[index] = product # Store the product of elements to the left
    product *= nums[index] # Update the product for the next element

    product = 1
    # Calculate the product of all elements to the right of each element
    for index in range(length_of_nums - 1, -1, -1):
    result[index] *= product # Multiply by the product of elements to the right
    product *= nums[index] # Update the product for the next element
    return result

  • @sameerdas2468
    @sameerdas2468 7 หลายเดือนก่อน

    Man you are god 😭🙏 your explanation is outstanding 👏 you earned a subscriber today ❤️.

  • @rajkumardongre3085
    @rajkumardongre3085 4 วันที่ผ่านมา

    C++ most optimized code:
    class Solution {
    public:
    vector productExceptSelf(vector& nums) {
    int n = nums.size();
    vector res(n, 1);
    int pre = 1;
    int suf = 1;
    for(int i=0; i

  • @vikrantt22
    @vikrantt22 3 หลายเดือนก่อน

    I used the same approach but instead of having left and right array I create a function that calculates prefix product and another function to calculate suffix product and at the end multiply prefix product and suffix product to obtain final answer but this answer exceeds the time limit. Thank you for simple explanation of same logic from another POV.

    • @nikoo28
      @nikoo28  3 หลายเดือนก่อน +1

      that approach works too

    • @vikrantt22
      @vikrantt22 3 หลายเดือนก่อน

      @@nikoo28 Yeahh but for that approach time limit exceeds.

  • @truecoding8659
    @truecoding8659 2 ปีที่แล้ว +2

    Here is my solution in python, i used to for loop and it givs the same answer.
    arr=[2,1,3,4]
    arr1=[]
    r=1
    for i in range(len(arr)):
    pro=arr[i]
    for j in arr:
    if j is not pro:
    r=r*j
    arr1.append(r)
    r=1
    print(arr1)

    • @nikoo28
      @nikoo28  2 ปีที่แล้ว +2

      but the time complexity of your solution is O(n^2)...because of the nested loops. You can try to improve that.

    • @avanishraj386
      @avanishraj386 ปีที่แล้ว +1

      @@nikoo28 this will fail when arr = [0,0]

    • @nikoo28
      @nikoo28  ปีที่แล้ว

      @@avanishraj386 did you try the code given on github? It will work with your sample test case. What error are you getting?

    • @avanishraj386
      @avanishraj386 ปีที่แล้ว +1

      @@nikoo28 I am not talking about your code, I have replied the above comment of "True Coding".

  • @infinite639
    @infinite639 2 ปีที่แล้ว

    Thanks bhai
    leetcode ke videos banate raho mere liye or sabke liye
    Love you bro

    • @nikoo28
      @nikoo28  2 ปีที่แล้ว +1

      Thanks for the love

  • @saisree04
    @saisree04 6 หลายเดือนก่อน

    Excellent explanation. I am so glad that I came across your YT channel

  • @infinite639
    @infinite639 2 ปีที่แล้ว +2

    i have shared your tutorials to my friends

    • @nikoo28
      @nikoo28  2 ปีที่แล้ว +1

      Thank you so so much 😄

  • @Code_Cracker-n5r
    @Code_Cracker-n5r 25 วันที่ผ่านมา

    Great explanation, This is the video I am searching for. Thanks

  • @VinethaSathya
    @VinethaSathya หลายเดือนก่อน

    Truly wonderful, Sir! Thank you so much for creating such a helpful video. I really appreciate your effort.

  • @VIJAYMAMORIA-c8m
    @VIJAYMAMORIA-c8m 5 หลายเดือนก่อน

    Leetcode has mentioned to try O(1) space solution. You should add one more part in the video for such optimizations.

  • @Aryan-oc1fq
    @Aryan-oc1fq ปีที่แล้ว

    recently found your videos, and im loving the explanations. thank you !

    • @nikoo28
      @nikoo28  ปีที่แล้ว +1

      hope they are of help to you

  • @meetshah545
    @meetshah545 8 หลายเดือนก่อน

    Very nice explanation, I really search your channel for Ds-algo questions . Thanks sir for teaching free.

  • @gameplays8457
    @gameplays8457 4 หลายเดือนก่อน

    Really good explanation. Clearly understood the concept. Thank you!

  • @ASHWANIDEWANGAN-f3e
    @ASHWANIDEWANGAN-f3e ปีที่แล้ว

    Fall in love with your explanation ❤❤❤❤❤❤❤❤

  • @Eatbite7
    @Eatbite7 2 ปีที่แล้ว +1

    The way you teach it feels like there is nothing in DSA

    • @nikoo28
      @nikoo28  2 ปีที่แล้ว

      Thanks for the appreciation…I really try to simplify things as much as possible.

  • @tHeR4s3Ng4n
    @tHeR4s3Ng4n หลายเดือนก่อน

    class Solution {
    public int[] productExceptSelf(int[] nums) {
    int n = nums.length;
    int ans[] = new int[n];
    Arrays.fill(ans, 1);
    int curr = 1;
    for(int i = 0; i < n; i++) {
    ans[i] *= curr;
    curr *= nums[i];
    }
    curr = 1;
    for(int i = n - 1; i >= 0; i--) {
    ans[i] *= curr;
    curr *= nums[i];
    }
    return ans;
    }
    }

  • @JagadeeswarN-ur7of
    @JagadeeswarN-ur7of วันที่ผ่านมา

    Great explanation..thanks!!

  • @SMK1455
    @SMK1455 4 หลายเดือนก่อน

    Thank you a lot for such great explanation of the problems!

  • @thenormalpen1900
    @thenormalpen1900 4 หลายเดือนก่อน

    Wow, that is such a clear soln, thanks!

  • @thakurabhishtpratapsingh1686
    @thakurabhishtpratapsingh1686 7 หลายเดือนก่อน +1

    i was getting time limit exceeded for one of the test cases.

    • @nikoo28
      @nikoo28  7 หลายเดือนก่อน +1

      Check out the code given in video description

  • @jayeshjain4540
    @jayeshjain4540 9 หลายเดือนก่อน

    Sir the question also says You must write an algorithm that runs in O(n) time and without using the division operation.

    • @nikoo28
      @nikoo28  9 หลายเดือนก่อน

      I don't use the division operator.

  • @sohanchoudhary1744
    @sohanchoudhary1744 3 หลายเดือนก่อน

    God level explanation sir

  • @raool7
    @raool7 3 หลายเดือนก่อน

    love the way you teach

  • @Max-tq1ig
    @Max-tq1ig ปีที่แล้ว

    Totally understood. Thanks a lot.

  • @Dineshkumar_dk
    @Dineshkumar_dk ปีที่แล้ว +1

    but we have to solve this with O(1) space

    • @nikoo28
      @nikoo28  ปีที่แล้ว +2

      let me come back to you.

  • @amansingh4009
    @amansingh4009 17 วันที่ผ่านมา

    What about the extra space you took for left and right array.

    • @nikoo28
      @nikoo28  17 วันที่ผ่านมา

      That’s why the space complexity is O(n)
      What exactly is your question?

  • @benvan3721
    @benvan3721 4 หลายเดือนก่อน

    What each line of code does matters and very impotant to understand too. I wish you explain that rather than reading it.

    • @nikoo28
      @nikoo28  4 หลายเดือนก่อน +1

      Thanks for your feedback. But my friend, my channel primarily focuses on problem solving rather than writing the code. Because the code languages will keep on keep on changing with time. Problem solving skills will always remain the same. I would always encourage you to write the code on your own to become a better developer.
      If you are looking to learn the code line by line, there are a lot of videos who do a better job than me. :)
      Plus you have so many AI technologies to explain the code.

  • @prakhargarg4166
    @prakhargarg4166 11 หลายเดือนก่อน

    Question says no extra space, then why left and right arrays

    • @nikoo28
      @nikoo28  10 หลายเดือนก่อน +1

      That part got added to the question recently. It wasn't there when I created the video. Will post an update soon on it.

  • @vivekjaiswal4391
    @vivekjaiswal4391 ปีที่แล้ว +1

    Great teacher 👏

  • @anishasaini380
    @anishasaini380 9 หลายเดือนก่อน

    Sir Best Explanation!!

  • @LongNguyen-pe5uo
    @LongNguyen-pe5uo ปีที่แล้ว +1

    Good video, very easy to understand.

  • @gayatriyadav4007
    @gayatriyadav4007 3 หลายเดือนก่อน

    Very well explained!

  • @robertnant1264
    @robertnant1264 8 หลายเดือนก่อน

    Thank you for the video. But somehow I don't know how it's possible to find the solution without knowing this trick (prefix, suffix). What am I missing in my reasoning?

    • @nikoo28
      @nikoo28  7 หลายเดือนก่อน

      This is a kind pf problem which comes with practice. The idea is that once you solve a problem like this, it will open your mind and you will try to apply the same pattern to future problems.

  • @ankitkumarjha4691
    @ankitkumarjha4691 3 หลายเดือนก่อน

    next level sir

  • @MeghnaSingh-s2y
    @MeghnaSingh-s2y 15 วันที่ผ่านมา

    best explanation sir

  • @_arnav_chaudhuri
    @_arnav_chaudhuri 3 หลายเดือนก่อน

    Next Level Teaching Subscribed !!

  • @covert000
    @covert000 3 หลายเดือนก่อน

    Exellent Explaination sir

  • @kirthananambiar8873
    @kirthananambiar8873 2 ปีที่แล้ว

    Thank you so much sir.
    Explained very well.

  • @kenilkanani16
    @kenilkanani16 4 หลายเดือนก่อน

    Awesome explanation 🎉

  • @zahraBatenin
    @zahraBatenin ปีที่แล้ว +1

    you explained it very well. thanks

    • @nikoo28
      @nikoo28  ปีที่แล้ว

      So nice of you

  • @yuvamamidipalli7127
    @yuvamamidipalli7127 6 หลายเดือนก่อน

    Sir i didn't understand the approach that you have explained about 2^32 and 10^12>2^32

    • @nikoo28
      @nikoo28  6 หลายเดือนก่อน

      What part are you getting confused with?

  • @EIsenah
    @EIsenah ปีที่แล้ว

    Nicely explained. Thank you very much

  • @RN-jo8zt
    @RN-jo8zt 2 หลายเดือนก่อน

    i think this logic only apply for this specific problem ?
    it's not generic algo..

  • @piyushanand3135
    @piyushanand3135 8 หลายเดือนก่อน

    Amazing Explaination

  • @Piyush-me9nu
    @Piyush-me9nu 11 หลายเดือนก่อน

    Amazing explanation!

  • @c4rtel
    @c4rtel ปีที่แล้ว +1

    Very nice explanation.

  • @srishti.shetty
    @srishti.shetty 4 วันที่ผ่านมา

    so good

  • @mikedelta658
    @mikedelta658 11 หลายเดือนก่อน

    Excellent explanation.

    • @nikoo28
      @nikoo28  10 หลายเดือนก่อน

      Glad you liked it

  • @58harshverma57
    @58harshverma57 ปีที่แล้ว

    brackets are not allowed here; to declare an array, place the brackets after the name
    int[] left = new int[nums.size()];
    ~~ ^
    []
    this error is coming

    • @nikoo28
      @nikoo28  ปีที่แล้ว +1

      Please recheck your code. The declaration is correct. Also check my complete code in the github link available in video description.

    • @58harshverma57
      @58harshverma57 ปีที่แล้ว

      @@nikoo28 yes sir I have corrected it ..I haven't made left and right as vectors! Thanks for the solution ! 😄

  • @AravindKumar-lj7kx
    @AravindKumar-lj7kx ปีที่แล้ว

    Thanks a lot....you are great....

  • @yxs7
    @yxs7 ปีที่แล้ว +1

    u are the best! thx! ❤👏✨

    • @nikoo28
      @nikoo28  ปีที่แล้ว

      you are the best

  • @vlogsaryan2540
    @vlogsaryan2540 2 ปีที่แล้ว

    Bhaiya why would you used num[i-1] and [n+1] in both the left and right Loop pls explain

    • @nikoo28
      @nikoo28  2 ปีที่แล้ว

      please try to look at the explanation of the left and right array once again, we have to skip those elements. if you are still confused..let me know

  • @siddharthmehta4223
    @siddharthmehta4223 ปีที่แล้ว

    it gives the following error for the array you created to store right side value.
    error: cannot find symbol [in __Driver__.java]
    int[] ret = new Solution().productExceptSelf(param_1);
    ^
    symbol: class Solution
    location: class __DriverSolution__

    • @nikoo28
      @nikoo28  ปีที่แล้ว

      Check the github link in the description below, for a working code :)

  • @TalhaTabrez7
    @TalhaTabrez7 10 หลายเดือนก่อน +1

    thank you

  • @rishabhsaini7836
    @rishabhsaini7836 ปีที่แล้ว +1

    Nicest explanation ❤❤

  • @nenuanenenuane6645
    @nenuanenenuane6645 ปีที่แล้ว

    Thank you bro❤❤

  • @sairanjanrout7664
    @sairanjanrout7664 14 วันที่ผ่านมา +1

    watch at 1.25x

  • @benmyths
    @benmyths 4 หลายเดือนก่อน

    thanks

  • @SingwithSuhas
    @SingwithSuhas 11 หลายเดือนก่อน +1

    superb

  • @subee128
    @subee128 11 หลายเดือนก่อน +1

    Thanks

  • @bun_bun17
    @bun_bun17 ปีที่แล้ว

    you are great :)

  • @clasherrony6526
    @clasherrony6526 7 หลายเดือนก่อน

    amazinggggggg

  • @danishmehmood6110
    @danishmehmood6110 4 หลายเดือนก่อน

    bro this problem has a better and more simple solution
    step 1 - just calculate the product of the whole array in this example the answer would be 1*2*3*4=24
    step 2 - in the second step to calculate result [ i ] just divide the calculated result by nums [ i ] e.g to calculate result [ 0 ] = 24/1 =24
    result [ 1 ] =24/2 =12 and so on

    • @nikoo28
      @nikoo28  4 หลายเดือนก่อน

      does this method get accepted? I believe you will hit limits when trying to multiply all the numbers.

  • @jalajgoel5845
    @jalajgoel5845 2 หลายเดือนก่อน

    Pr o(n) m kha aayi yh

  • @ankit_yr_senpai
    @ankit_yr_senpai 5 หลายเดือนก่อน

    great

  • @Incognito-s2w
    @Incognito-s2w ปีที่แล้ว

    i think this is good approach then your code please review it
    solving in O(n) time and o(1) space complexity
    class Solution {
    public:
    vector productExceptSelf(vector& nums) {
    int zero = 0;
    int tmul = 1;
    for(auto num : nums){
    if(num)
    tmul *= num;
    else{
    if(zero){
    tmul = 0;
    break;
    }
    zero++;
    }
    }
    for(auto &num : nums){
    if(num)
    num = zero>0 ? 0 : tmul/num;
    else num = tmul;
    }
    return nums;
    }
    };

  • @ahamedsha9688
    @ahamedsha9688 11 หลายเดือนก่อน +1

    I am dumb

  • @sainathkadam2213
    @sainathkadam2213 ปีที่แล้ว

    You r osm 🔥

    • @nikoo28
      @nikoo28  ปีที่แล้ว

      Thank you so much 😀

  • @harshsharma2888
    @harshsharma2888 3 หลายเดือนก่อน

    Next Level sir

  • @MdArif-pc9bz
    @MdArif-pc9bz 5 หลายเดือนก่อน

    Thank you