DP 18. Count Partitions With Given Difference | Dp on Subsequences

แชร์
ฝัง
  • เผยแพร่เมื่อ 22 ม.ค. 2025

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

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

    I need your support, and you can do that by giving me a like, and commenting "understood" if I was able to explain you.
    Keeping a like target of 500 ❤✌🏼

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

      understood

    • @himalayadebbarma-we4pt
      @himalayadebbarma-we4pt 6 หลายเดือนก่อน

      Understood

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

      what if test case in dp17 is like {2, 0 , 0 , 4 , 2 ,2} and sum = 4 , then will this solution work ? i guess at the time whenever we found sum == 0 at index > 0 , then we have to calculate number of zero till index == 0 let's suppose it is z , and then retum 2^z . What everyone think about it ?

  • @AbhishekKumar-cv1dh
    @AbhishekKumar-cv1dh ปีที่แล้ว +74

    I'll be honest, I was bamboozled with the 0's in array edge case since DP17 and I was simply unable to find a clear answer from the comments. Had I simply closed my eyes and went ahead with DP 18, I would have legit saved ~ 2 hours of confusion!!
    Thankyou so much Striver, this lecture cleared all my doubts 🔥🔥🔥🔥🔥

    • @mayanksingh7501
      @mayanksingh7501 8 หลายเดือนก่อน +11

      Those confusion and doubts and 2 hours will only help in longer run. Good work on not directly jumping to another video without clearing your doubts on your own.

    • @after_dark_777
      @after_dark_777 8 หลายเดือนก่อน +2

      for real should have moved on to this video those comments were so confusing

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

      Samee

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

      sameeeeeeeeeeee

  • @nikhilmadaan29
    @nikhilmadaan29 7 หลายเดือนก่อน +15

    hats off man,, spent 2 hours on DP17 to fix that but after watching this DP 18 everything went super smooth

    • @mohaksharma1412
      @mohaksharma1412 10 วันที่ผ่านมา

      lol same it was worth it though

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

    Striver's concept explanation is so cool, easy and easily get stuck into the head. I wish to meet him one day and say a lot of thanks to him.

  • @Aniruddha_Chowdhury
    @Aniruddha_Chowdhury 8 หลายเดือนก่อน +10

    understood until 14:00 ❤ .
    Will learn the optimization later

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

    The deduction of (totalSum - D) / 2 was amazing. Understood!

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

    Understood! Hats off to ur dedication, u are still teaching while suffering from fever.

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

    Already understood before starting of video that's what Striver teaches us

  • @saketsoni2587
    @saketsoni2587 ปีที่แล้ว +65

    I studied DP from aditya verma, but was never able to figure out how to handle the zeros in the array, you made it super easy, Thanks!

    • @entertainmenthub373
      @entertainmenthub373 ปีที่แล้ว +8

      but aditya verma always tell you the in=dentification and where u can use this apparoach nd similar questions he is the god of cp ik he skip the case of 0 in array but aditya verma is for cp where u can use which approach and how to identify which approach by seeing solution

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

      @@entertainmenthub373 God of cp is tourist.

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

      its not like he was not able to figure out , he always gives an intution to solve the problem , not like come and tells you the whole solution.

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

      aditya vermas approach works with zeroes as well, as in that we subtract dp[i-1][j-arr[i-1]]

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

    Us, but the way you transformed the problem into previously solved problem is amazing , that's the way we have to think ... Thanks ❤

  • @blackblood181
    @blackblood181 ปีที่แล้ว +8

    we can also use :
    if(ind < 0){
    if(sum==0) return 1;
    return 0;
    }
    apart from these conditions:
    if(ind == 0) {
    if(sum==0 || num==arr[0]) return 1;
    if(sum==0 && arr[0]==0) return 2;
    return 0;
    }

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

      this makes the code really simple to understand. perfect base case.

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

      Best Bhai
      @@anuragprasad6116

    • @manojnandhan8677
      @manojnandhan8677 6 หลายเดือนก่อน +3

      but how will you handel -1 index in tabulation?

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

    UNDERSTOOD.........Thank You So Much for this wonderful video...............🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻

  • @anonymous-p4m
    @anonymous-p4m 24 วันที่ผ่านมา

    The lecture is awesome as always. Thank you so so much for making these videos even when you are sick. You inspire me to work hard. Thank you again :)

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

    Superb Bhaiya
    guys watch at 10:10
    Amazing Concept
    Again and again Thankyou bhaiya Aka Striver

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

    4:48 or I think, we can go 1 step deeer into indx = -1
    then base case would be simpler
    if (indx == -1) {
    if (sum == 0) return 1;
    else return 0;
    }

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

      Then how do you take care of base case in Tabulation. As dp array cannot have -ve indexes.

    • @RTXCR7
      @RTXCR7 ปีที่แล้ว +8

      @@introvert9112k for that i think we would need to make 1 indexed arrays of size n+1 having an extra 0 index free

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

    Understood! Striver. The best Software Engineer himself

  • @gauravgogoi5240
    @gauravgogoi5240 9 หลายเดือนก่อน +1

    After this video, they updated the problem! Real influencer

  • @vaibhavrai7042
    @vaibhavrai7042 5 หลายเดือนก่อน +1

    To deal with the 0 case, we can also take the dp array to be of size [n+1][sum+1] and initialize the dp[n][0]=1
    int[][] dp = new int[n+1][sum+1];
    dp[n][0]=1;
    for(int index=n-1;index>=0;index--)

  • @tarunrao1505
    @tarunrao1505 ปีที่แล้ว +15

    Hello,
    The tabulation code is not passing all test cases in both videos dp-17 && dp-18. Is anyone facing the same problem. Pls HELP.

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

      same bhai

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

      @@aryarajendra1088 #include
      int countPartitions(int n, int d, vector &a) {
      // Write your code here.
      long long sum=0;
      for(int i=0 ; i

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

      @@aryarajendra1088 try doing mod with 10^9+1
      dp[row][col] =(dp[row][col]%mod+ dp[row-1][col]%mod)%mod;
      int val = num[row-1];
      if(col>=val){
      dp[row][col] =(dp[row][col]%mod+ dp[row-1][col-val]%mod)%mod;
      }

  • @balajisrinivasan6618
    @balajisrinivasan6618 ปีที่แล้ว +10

    Thank you striver ! Just a note : writing recursion from 0 to n-1 looks far easier to handle bases cases than writing recursion from n-1 to 0 on subsequence problems

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

      but for me it creates problem while writing the tabulation form. Esp. with all the subsequences questions.

    • @chase.2595
      @chase.2595 ปีที่แล้ว

      yeah man, we have to start from n-2 if we do 0 to n-1 in recursion@@santoshpokhrel7693

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

      yaa bro really it creates confusion in tabulation
      @@santoshpokhrel7693

  • @anmol3749
    @anmol3749 29 วันที่ผ่านมา

    Understood
    Thank you striver🙌🙌

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

    Another modified target could be (difference + totalSum)/2;
    To explain this how this came is :
    s1= sum of elements in subset 1
    s2 = sum of elements in subset 2
    s1 - s2 = d (We need to find 2 subsets with difference d )
    s1 + s2 = totalSum (We know the sum of 2 subsets would be equal to the total sum of array)
    Adding these 2 equations , we get s1 = (d + totalSum)/2, thus we only need to find a subset with sum s1.

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

      But this will increase the space req :)

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

      @@takeUforward Oh Okay , I didn't think about that !

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

      @@chetanthakral5322 lol, I thought the same thing, but its not pure math its cs.

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

      @@varunaggarwal7126 how this increases the space.. can u explain

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

      @@UCSParnashreeDas it's been 1 month,lol i have to revise this dp, but I guess you can see + sign while striver is subtraction, means less

  • @mohaksharma1412
    @mohaksharma1412 10 วันที่ผ่านมา

    Thanks to striver i could come up with using DP-17 by my own including the edge cases

  • @MukeshKumar-cc3uh
    @MukeshKumar-cc3uh 10 หลายเดือนก่อน

    Understood 👍. Hats off to your dedication for us. ♥

  • @hashcodez757
    @hashcodez757 5 หลายเดือนก่อน +1

    "UNDERSTOOD BHAIYA!!"

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

    bhaiya in count subset problem which u had taken earlier , in tabulation the loop started from 0 to sum but when sum==0 it has been handled previously right? then it should start from 1 right? as in problem subset sum==k u started the sum loop from 1 to sum as for sum==0 we have handled it previously before the loop.

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

      Yes u can, won’t be an issue :)

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

      @@takeUforward yes i did that in the count subsets problem, but when I did that in the current problem of partition i.e. looping from 1 to sum it's giving WA, but when i changed to 0 to sum it's giving correct and. Why so?

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

      @@aryanagrawal4794 because in partition at 0 there are other cases to handle. Here at 0, its take and notTake, hence

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

      @@takeUforward ok bhaiya got it.

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

      @@aryanagrawal4794 Hey can you explain it to me?

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

    Done. Understood the concepts so well.

  • @AmanBawane-o9q
    @AmanBawane-o9q 6 หลายเดือนก่อน +2

    another base case(Better and Concised):
    if(ind

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

    Understood 💯💯Great Explanation. Thank you very much for all you efforts🔥🔥

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

    For Those who did not understand why total sum-d has to be even so imagine totalsum=15 and d=2 now count s2=(15-2)/2 it will give s2=6; ans s1-s2=d so s1=2+6=8 now here it is said that s1+s2=totalsum but s1+s2=14 which is not equal to total sum to total sum-d has to be even

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

      thankyou my guy🙌

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

    For tabulation, we can do dp[0][0]=1 and
    dp[0][nums[0]]+=1
    Without checking for all cases

  • @soumik5854
    @soumik5854 6 หลายเดือนก่อน +1

    solved this problem on my own very proud of this

  • @kushalgupta2041
    @kushalgupta2041 16 วันที่ผ่านมา +1

    hey can't we do it like this remove the base case to this idx < 0 then if sum == 0 return 1 or else 0; now what will happen is if idx == 0 and sum == 0 then we will use take and notTake both, but if only sum is 0 but not arr[0] then only notTake and when sum == arr[0] and both are not zero then only Take will execute so eventually u don't have to write 3 lines of extra code right?

  • @gauravgogoi5240
    @gauravgogoi5240 9 หลายเดือนก่อน +1

    15:00 the most important point to be noted if you are in an intervie

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

    Understood better than ever!

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

    #Understood #DP18 #Hatsoff #Striver

  • @Lyrics_dunya
    @Lyrics_dunya 11 หลายเดือนก่อน +3

    For Problem 17 , I struggled a bit in Tabulation while writing the base cases for the new changes.
    All 3 cases covered, also notice the bases cases are written in reverse order, so that the priority is given to the last one if its true.
    One more thing since we are considering the case for i = 0, please start the 2nd loop of target from 0 till k(inclusive). Happy learning!
    dp[0][0] = 1
    if arr[0]

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

      Hey, thank you. Great comment.

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

    At 15:15, shouldn't the condition be ((nums[0] != 0)&&(nums[0] == target)) ??

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

    understood. Also thanks for explaining Space Optimization so good. I am from tier-3 mechanical never knew all these stuff

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

    Great Explanation Striver , Thanks

  • @ntgrn-pr5yx
    @ntgrn-pr5yx 2 หลายเดือนก่อน

    understood , thank you striver

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

    I thing the simplest way to get rid of so many conditions of 0's we can simply start the recursion for 0 to n-1; then we will get correct ans i.e.4;

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

      Yes, and it would also work even if the array doesn't contains any zeroes.. The base cases are also so simple to handle over here.

    • @VinayKumar-xs6el
      @VinayKumar-xs6el 4 หลายเดือนก่อน

      can u share the code here please that starts from 0 & ends at n-1

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

      @@VinayKumar-xs6el will share soon, i also have to check where i have written the code. It's been 2 years

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

    Thankyou very much for explaining base case of last question. I was stacked for last 6 hours. ❤️❤️

  • @TheDebuggers-fx9vp
    @TheDebuggers-fx9vp 5 หลายเดือนก่อน

    i thnk a sligh change in base case can handle all the case well,instead of returning when we encounter the target to 0; if we keep exploring until the end of the tree then we can get our desired result
    class Solution {
    public:
    int helper(int arr[], int n, int sum, vector& dp) {
    // Base case: If there are no elements left
    if (n == 0) {
    return (sum == 0) ? 1 : 0;
    }
    // If the subproblem has already been solved, return the stored result
    if (dp[n][sum] != -1) return dp[n][sum];
    // Compute the result for this subproblem
    int notPick = helper(arr, n - 1, sum, dp);
    int pick = 0;
    if (arr[n - 1]

  • @Parthj426
    @Parthj426 6 หลายเดือนก่อน +2

    us
    But i got confused as in DP 18 ques , it is written that two partitions have their union as Whole array . It should have been given that both are exclusive of each other , for being self-explanatory well.

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

    at 15:53 , the target should run from 1 to sum right? we have run from 1 to sum in the count subsequences with sum k also, why did you take from 0 to sum?

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

    UNDERSTOOODD!!!
    Thank you, Striver!!

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

    understood , the space optimization is amazing sir

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

    Understood 💯💯Great Explanation

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

    I have a doubt.
    The question says the the union of two subsets will give the original array , that means there can be repeating elements and its not necessary that S1 + S2 = totalSum
    E.g -> arr = {1, 2, 3, 4, 5}
    totalSum = 15
    S1 = {1, 2 ,3, 4}
    S2 = {1, 5}
    sum1 = 1 + 2 + 3 + 4 = 10
    sum2 = 1 + 5 = 6
    The union of the above two will give original array but sum1 + sum2 != totalSum.
    So how is the code working ? Is the problem statement wrong?

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

      you are right code is only passing 6 test cases not all

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

      the question's wording is wrong, look at the same question on gfg, won't see "union" written anywhere.

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

    In the space optimized solution why the loop sum=1 to target doesn't work as we have been doing previously and setting curr[0] =1 since for any index with target as 0 there is only single subset. Can someone explain please?

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

    Understood, well explained.

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

      ok

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

    That algebra at 10:15 is crazy I would never see that under the time constraints of a real interview. It's brilliant tho

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

    thanks for another great video

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

    for DP 17
    for [ 7,1,0,2,5] with tar=7
    Method 1: originalAns*(pow(2,n))
    Method2: Changes in base case will that work? I can see from recursion tree there would be redundant calls at level where 0 is considered

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

      How do I write the base case in tabulation, Could you please tell me?

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

      Method 1 is time intensive if let's say the no of zeroes were 15-20 in an array...Hence method 2 with handling zero in the base cases is required at such cases.

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

    Python implementation:
    def countPartitions(n: int, d: int, arr: List[int]) -> int:

    '''
    Carefully analyze the problem.
    Let S1, S2 be the sum of two different subsets
    S1 + S2 = total_sum of array elements
    Goal: Count the subsets, such that (S1 >= S2) and (S1 - S2 = D)
    total_sum = S1 + S2

    => S1 = total_sum - S2
    From S1 - S2 = D
    total_sum - S2 - S2 = D
    S2 = (total_sum - D) // 2 (or)
    S1 = (total_sum + D) // 2
    Problem boils down to finding number of subsets
    whose sum is (total_sum - D) // 2 (or)
    sum is (total_sum + D) // 2
    '''

    '''
    Space Optimization
    '''
    if not arr:
    return 0
    total_sum = sum(arr)
    target = (total_sum - d) // 2
    # print('Target: ', target)
    if (total_sum < d) or (total_sum - d) % 2 != 0:
    return 0
    mod = 10 ** 9 + 7
    prev = [0 for t in range(target + 1)]
    # Base Cases
    # 1. At index 0, if val == 0 => 2 (pick/ unpick doesn't matter)
    # 2. Else, At index 0, val 1 way (pick it)
    prev[0] = 2 if arr[0] == 0 else 1

    if arr[0] != 0 and arr[0]

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

    You have literally made dp look so easy !

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

    Nicely Explained! Understood!

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

    Understood...Completed 18/56

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

    why doesnt the
    for(int i = 0;i

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

    bro doing gods work

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

    Understood ❤

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

    Guys! For DP 17, Memoization code, striver's approach is correct (6:38), but here's a cleaner alternative for the base case:
    if(ind

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

      It'll be hard to convert this base case to tabulation dp states as it's not well defined wrt the indices.

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

      @@abhishekgururani6993 You're right. But the tabulation base cases are straightforward and simple. One can write that by applying basic logic.

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

      Yes, I also tried this. got correct in both tabulation and memoization. Striver has complicated this solution a little bit.😅

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

      @@abhishekgururani6993 Simple base case, if sum == 0, return 1; means fill all the 0 indices row with 1. The change is that you have to traverse j=0 to j

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

    at 14:03
    why you removed
    for()
    dp[i][0]=1;

  • @TON-108
    @TON-108 ปีที่แล้ว

    Understood Bhaiya!

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

    understood. Thank you so much

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

    What if we find with target = totalsum
    Then at n-1 iteration of tabulation find S1 and S2 by totalsum - S1.
    Then If S1>=S2 and S1-S2=D we can return True else False

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

    Understood
    Thanks Striver for this Dp series

  • @hrushikesh-1914
    @hrushikesh-1914 ปีที่แล้ว

    Understood. Thankyou sir.

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

    If we have handled the case num[0] == 0 previously then why we are checking it again for num[0]

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

    Can anyone please explain why target is starting from 0 here? in all other problems it's starting from 1. If I take 1, some test cases are failing

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

    please tell us the time when this amazing course will get end......expected time??

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

    UNDERSTOOD... !
    Thanks striver for the video... :)

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

    In lecture 17, can we handle the cases having zeroes by just multiplying our previous answer with pow(2,n) where n is the no. of zeroes

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

    Thanks a Lot Striver 🥰

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

    OMG bhaiya ...simple "genius"

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

    Instead of changing the code we can just add a if statement before "take" variable that if arr[index]== 0 then skip it...

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

    wouldn't it be better to go an ind

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

    UNDERSTOOD

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

    *********** Iterative Code for the count number subsequence whose sum is k ( & 0

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

    we can also do like this,
    private static int count(int i, int[] num, int k){
    if(i == num.length){
    if(k == 0){
    return 1;
    }else{
    return 0;
    }
    }
    int take = 0;
    if(k >= num[i]) take = count(i + 1, num, k - num[i]);
    int notTake = count(i + 1, num, k);
    return (take + notTake) % MOD;
    }

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

    Thank you so much!

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

    just mind blowing how you came up with the modified target, kyse kar lete ho bhaiya?

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

    understood sir🙂

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

    Is the condition num[0]

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

      The condition is necessary because we are declaring dp vector of size n×(tar+1) so lets if our arr[0]th element is greater then tar (arr[0]>tar) then if we do dp[0][num[0]] it will give us TLE as we fixed its size to (tar+1) but we are storing value at a index which does not exist so thats why that condition is important. Hope u understand ;)

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

      @@neerajgarg9096 THANK YOU SO MUCH! my brain was hurting thinking why but now i see

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

    Understood 🔥🔥

  • @mahima-481
    @mahima-481 2 หลายเดือนก่อน

    test cases are not passing for recursive solution. any solution?

  • @SatyamKumar-bw4vi
    @SatyamKumar-bw4vi ปีที่แล้ว

    Hare Krishna..!! understood.

  • @VaibhavTapariya-b3r
    @VaibhavTapariya-b3r 6 หลายเดือนก่อน

    we can sort also striver to deal with 0s in dp17?? but that works only when sum is not equal to zero😅

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

    DP 18 starts from 7:25

  • @chad._life
    @chad._life 2 หลายเดือนก่อน

    understood bhaiya

  • @SmitShah-m1m
    @SmitShah-m1m ปีที่แล้ว

    Understood Sir.

  • @mehakgarg4676
    @mehakgarg4676 28 วันที่ผ่านมา

    sir i have a doubt how should i ask like its in code

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

    completed subsequences set problems great learning

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

    Understood. Best on whole yt.

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

    understood ❤❤🤞🤞🤞🤞🤞🤞🤞🤞

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

    Striver can you explain the approach when there are negative elements also in the array

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

    Below code is failing on 7th test case, giving wrong answer. Can someone help in finding what is the mistake I am making.
    int countParts(vector &arr, int sz, int d, int index, int s1, int s2, vector &dp){

    if(index == -1){
    if(s1>=s2 and s1-s2 == d) return 1;
    return 0;
    }
    int mod = 10e9 + 7;

    if(dp[index][s1] != -1) return dp[index][s1];

    int pick = 0, notPick = 0;
    if(s1>=s2) pick = countParts(arr, sz, d, index-1, s1-arr[index], s2+arr[index], dp);
    if(s1>=s2)notPick = countParts(arr, sz, d, index-1, s1, s2, dp);

    return dp[index][s1] = (pick%mod + notPick%mod)%mod;
    }
    int countPartitions(int n, int d, vector &arr) {
    int totSum = 0;
    for(auto &val: arr) totSum += val;

    vector dp(n+1, vector(totSum+1, -1));
    return countParts(arr, n, d, n-1, totSum, 0, dp);
    }

  • @VikasGupta-ok9lh
    @VikasGupta-ok9lh 2 ปีที่แล้ว +2

    In that case my recursive code was going from 0 to n-1 and to avoid case of zero I sorted my array hence all the zero cases were sorted

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

      you don' t even need this , just go from 0 -> n , and if at n , target == 0, return 1 else 0 , all other cases are already been taken care off , if you do in this way .
      How ?
      our code will do this will we are making the recursive calls at n-1

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

    Thank you striver, made it super easy and interesting to learn DP. "UNDERSTOOD" 💓💓