L10. Subset Sum I | Recursion | C++ | Java

Поделиться
HTML-код
  • Опубликовано: 20 янв 2025

Комментарии • 313

  • @takeUforward
    @takeUforward  3 года назад +32

    C++ Code: github.com/striver79/SDESheet/blob/main/SubsetSumsC%2B%2B
    Java Code: github.com/striver79/SDESheet/blob/main/SubsetSumsJava
    Instagram: instagram.com/striver_79/​

    • @parthsalat
      @parthsalat 2 года назад +5

      Where's the link for the power set?

    • @aasthachauhan4385
      @aasthachauhan4385 2 года назад +3

      can you please make a video on power set as you said?

    • @aasthachauhan4385
      @aasthachauhan4385 2 года назад

      ruclips.net/video/b7AYbpM5YrE/видео.html the link for powerset

    • @takeUforward
      @takeUforward  2 года назад +1

      @@aasthachauhan4385 it is there

    • @parthsalat
      @parthsalat 2 года назад +2

      @@aasthachauhan4385 Power set is very easy...spend some time on it and you yourself can develop an algorithm for it

  • @lavanya_m01
    @lavanya_m01 3 года назад +317

    You have a lot of patience to trace out the whole recursion tree.. thanks a lot for this :)

    • @debjitdutta17
      @debjitdutta17 2 года назад +25

      what else do you expect from a 6star coder,these nothing for him xD

    • @rohanmishra2936
      @rohanmishra2936 Год назад

      humility is very rare these days though@@debjitdutta17

  • @anushakulkarni8490
    @anushakulkarni8490 2 года назад +66

    The first recursion sum I solved on my own and got accepted in the first go....thank u so much !!

  • @srikanthmathala940
    @srikanthmathala940 Год назад +6

    For simple variables (non-container types like int, float, etc.)(here it is sum), we don't need to adjust them explicitly after including them in a recursive call. The reason is each recursive call creates its own local variables, and any modifications we make within a recursive call are isolated and do not affect other recursive calls.

  • @kumarsaurabhraj2538
    @kumarsaurabhraj2538 3 года назад +29

    The time complexity of the recursive solution is also 2^N x N. We know that we will get 2^N subset sums and at last we sort the array so 2^N + (2^N)log(2^N) ~= 2^N x N

  • @imranimmu4714
    @imranimmu4714 2 года назад +11

    Couldn't Thank you enough Raj bhaiyya, I am currently going through Recursion playlist of yours, and I could absolutley say ,no one could have taught us better than this.
    Thank u soo much for your work.

  • @amanbhadani8840
    @amanbhadani8840 2 года назад +10

    The way you makes us understand each and every concept is just incredible bhaiya.For those finding it tough or not confident enough in recursion,i would suggest to solve more questions on trees.

  • @growcodeyt7256
    @growcodeyt7256 2 года назад +9

    The first recursive approach which I understood clearly.. Thank you so much sir.

  • @niyammuliya5787
    @niyammuliya5787 3 года назад +26

    If we sort the array before passing in function func, then no need to sort sumSubset array
    by doing this, We have also reduced the time complexity from O ( 2^n + (2^n) log(2^n)) to O (2^n + n Log(n)).

    • @venkateshn9884
      @venkateshn9884 3 года назад +6

      Yeah..but for that we we need to call right subtree before calling left subtree.

    • @rakshankotian2737
      @rakshankotian2737 3 года назад +4

      @@venkateshn9884 we need to sort in decreasing order in that case rit?

    • @venkateshn9884
      @venkateshn9884 3 года назад +1

      @@rakshankotian2737 Exactly 💯

    • @user-le6ts6ci7h
      @user-le6ts6ci7h 2 года назад

      You can't always do that , there could be chances , for certain test cases where the sorting order might go out of order
      Example [6,4,3,2]

    • @amitranjan6998
      @amitranjan6998 2 года назад

      @@user-le6ts6ci7h Nooo ....it will also work ,if you sort at starting ,we can achieve using O (2^n + n Log(n)),no issue on this

  • @VishalGupta-xw2rp
    @VishalGupta-xw2rp 2 года назад +5

    I was able to grasp this as it's a kind of Subsequence but we are only concerned with its Sum..... To think i was able to think of a logic myself.... Wowww all thanx to you 🙏♥️🤩🔥

  • @s.g.prajapati3597
    @s.g.prajapati3597 3 года назад +13

    First Viewer, just wanted to say, You're doing amazing job! Keep up the good work!

  • @mountINEER
    @mountINEER Год назад +3

    solved this under a minute, really quality content , best way to give back your learnings, true guru !!! . Eagerly waiting to meet you one day and I surely will ..

  • @princerajput6709
    @princerajput6709 2 года назад +3

    I have made this question from myself using both iterative and recursive approach thanks striver from bottom of my heart ❤

  • @Rajesh-op8zx
    @Rajesh-op8zx 2 года назад +4

    Actually we dont need to sort because if you first call for not pick then pick we get subset sum in ascending order thus T.C= O(2^N) . Code that is submited without sorting :
    void fun(int index, int sum , vector &arr,int N,vector &ans)
    {
    if(index==N)
    {
    ans.push_back(sum);
    return;
    }
    fun(index+1,sum,arr,N,ans);
    fun(index+1,sum+arr[index],arr,N,ans);
    }
    vector subsetSums(vector arr, int N)
    {
    vector ans;
    fun(0,0,arr,N,ans);
    return ans;
    }

    • @tanyagupta1176
      @tanyagupta1176 2 года назад

      Hey , can you explain why we are not subtracting arr[i] from sum when backtracking in case of not take.

    • @tanyagupta1176
      @tanyagupta1176 2 года назад

      @22.37

    • @stepup7052
      @stepup7052 2 года назад

      @@tanyagupta1176 beacuse we dont add it we just skip that index in parameter

  • @shivamshrey47
    @shivamshrey47 2 года назад +44

    If you just reverse the order of recursive calls (don't pick first and pick second), you would automatically get the resultant subset sum array in sorted form. This way one can avoid the final sorting of the result.

    • @pavanpatel6877
      @pavanpatel6877 2 года назад +2

      Woahh...That's a good observation though. Thanks shivam!

    • @26.aniketmatkar20
      @26.aniketmatkar20 2 года назад +18

      No it will not work, it will just reverse the answer vector. One element i.e 4 will remain unsorted

    • @subham8746
      @subham8746 2 года назад +7

      No it'll only reverse the output, it won't be sorted.

    • @Siscerto
      @Siscerto 2 года назад +1

      @@26.aniketmatkar20 bruh,,, it literally passed,,, and its sorted... idk how its getting sorted tho.. gotta draw recursive tree... however they never asked for sorted output tho
      ArrayList subsetSums(ArrayList arr, int N){
      // code here
      ArrayList sol = new ArrayList();
      setsum(sol,arr,N,0,0);
      return sol;
      }
      void setsum(ArrayList sol, ArrayList arr, int N, int i, int sum){
      if(i==N){
      sol.add(sum);
      return;
      }
      // 1.skip ele and proceed
      setsum(sol,arr,N,i+1,sum);
      // 2.pick ele, add sum and proceed
      setsum(sol,arr,N,i+1,sum+arr.get(i));
      }

    • @Siscerto
      @Siscerto 2 года назад +10

      The thing is we dont need to SORT, they're sorting it in the DRIVER code

  • @chowmein1397
    @chowmein1397 3 года назад +6

    Link for Power set Video mentioned at 3:15 :
    ruclips.net/video/b7AYbpM5YrE/видео.html

  • @yuvrajluhach5665
    @yuvrajluhach5665 3 года назад +18

    Moving to L11 , this was an easy one 👍

  • @democratcobra
    @democratcobra 3 года назад +3

    Thanks a lot for adding the visualization of the RECURSIVE CALL, it really helps in getting the proper understanding. Thanks a lot for your effort and hardwrork. Really Helpful.After watching this i am going to be member of your chanel.Really well explained.

  • @mriduljain1981
    @mriduljain1981 Год назад

    we can reduce the time for sorting by modifying the code as below -
    void solve(vector arr,int i,vector &ans,int sum){
    if(i == arr.size()){
    ans.push_back(sum);
    return;
    }
    solve(arr,i+1,ans,sum);
    sum = sum + arr[i];
    solve(arr,i+1,ans,sum);
    }
    vector subsetSums(vector arr, int N)
    {
    vector ans;
    solve(arr,0,ans,0);
    return ans;
    }

    • @tanujabetha5400
      @tanujabetha5400 9 месяцев назад

      Just a doubt in the code: When you are doing sum + arr[i], that means you are picking that element right. When you do to not pick recursion, dont you have to do sum = sum - arr[i] and then call recursion.

  • @yashlad875
    @yashlad875 2 года назад +8

    @take U forward
    Thanks for the amazing recursion and dynamic programming series,
    For this question I think we can have TC = 2^N by sorting the given array first and deciding to not pick before picking. That way the resultant array will be in sorted order!

    • @mridulshroff824
      @mridulshroff824 2 года назад

      Can you explain how not picking before picking reduces TC? I couldn't understand.

    • @shiyadh4471
      @shiyadh4471 2 года назад

      @@mridulshroff824 Because we need to reach to the lower sums before reaching to higher sum values.For example, take [ 2, 5, 1] as the arr.We sort it to [ 1, 2, 5] why? bcz, we will go and find all possible subsets starting with 1 ,then with 2 then only 5 - thus they will be in ascending order.Now, lets say you have slected [1,2] and the recursion call is suppose to pick/not pick the element 5 , by not picking it, my sum is 1+2=3 but by picking its 1+2+5=8 . so, which call i should make to get the least sum first(ascending order) ? Its the not pick case right ...

    • @shashankdixit92
      @shashankdixit92 2 года назад +1

      I think if we select not picking first, then in the Array (1,2,3)
      3 would be picked up first...

    • @yashlad875
      @yashlad875 2 года назад

      @@mridulshroff824 Because then we don't need to sort the output array in the end.

    • @BrahmaiahMorasa
      @BrahmaiahMorasa Месяц назад

      @@shashankdixit92 first we have to sort given array in descending order and then selecting not picking

  • @utkarshsarin9443
    @utkarshsarin9443 2 года назад +2

    Thank you so much Bhaiya...I am starting to get a better idea of recursive calls know and I am say this with a 100% certainity that your videos have a major role in all this ❤

  • @ankittjindal
    @ankittjindal 2 года назад +1

    ye qsn sbse easy tha phle k 2-3 lectures me qsns ko 2-3 bar rewind krke dekhna pdh rha tha lekin isme niii thnx😃

  • @Bharat_Rider
    @Bharat_Rider Год назад +1

    Understood bro i just understood the method without pseudo code and wrote program myself. Great explanation

  • @tasneemayham974
    @tasneemayham974 Год назад

    STRIVERR!!
    I watched the first couple of minutes of your video and then was able to code the solution alone!!! Thank you for the amazing content!!!!!!

  • @alexquistain4509
    @alexquistain4509 3 года назад +2

    Best explanation i have found here in this video thanks a lot for ur hard work nd keep doing

  • @codediary2568
    @codediary2568 2 года назад +1

    he is a legend for the first time I have solved a recursion question myself

  • @shreyxnsh.14
    @shreyxnsh.14 8 месяцев назад

    Thnaks striver, did all that by myself by just seeing half the approach.

  • @anishkarthik4309
    @anishkarthik4309 2 года назад +2

    We just need to sort the initial array(n logn) , and do not pick and then pick. So we end up getting an array of sums in sorting order(2^n for generating)
    T.c = O(n logn + 2^n) = O(2^n)
    S.c = O(2^n)

  • @gepliprl8558
    @gepliprl8558 2 года назад

    Thank you for using real english. I subscribe your soul 👍

  • @ganapatibiswas5858
    @ganapatibiswas5858 2 года назад +1

    We can sort the input array and then do recursion such a way that we take smallest elements first. This will generate subset sum smallest to largest and we don't need to sort the final array at the end.

    • @your_name96
      @your_name96 2 года назад +1

      umm, so you are adding code/logic complexity with no improvement in time complexity ?

    • @ganapatibiswas5858
      @ganapatibiswas5858 2 года назад +1

      @@your_name96 no we don't need to sort the final array which has the size of 2^n. We sort the input array which has size n.
      So time complexity will be less.

    • @your_name96
      @your_name96 2 года назад +1

      @@ganapatibiswas5858 oh yes,will try to implement this one

  • @artifice_abhi
    @artifice_abhi 2 года назад +1

    Bhaiya mtlb kaise btaun apne to kamal kardia
    ye question mne khud try kia aur first attempt m kardia
    Apse padhkar maza agya.

  • @khushichaudhary4859
    @khushichaudhary4859 Год назад +2

    22:24 c++ code

  • @shashwatpandey8243
    @shashwatpandey8243 2 года назад +1

    instead of sorting the array with subsets sum, we can just sort the array which contains n elements. and then we have to first call the function in which we do not include current element in the sum. this will result in sorted result only. and also sorting time would be reduced

    • @saddy4420
      @saddy4420 2 года назад

      Same this will reduce the TC from 2n log 2n to n log n

  • @roushanraj8530
    @roushanraj8530 3 года назад +1

    thank you bhaiya, for your awesome informative videos of most important DSA question, aap jldi thik ho jao ......

  • @Taal_Magic
    @Taal_Magic Месяц назад +1

    It can be done without sorting if we do not pick first and the call the pick recursion call.

  • @venkythesmart440
    @venkythesmart440 3 года назад +3

    you are doing amazing job ! keep up good work!

  • @ranasauravsingh
    @ranasauravsingh 2 года назад +1

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

  • @namansharma7328
    @namansharma7328 2 года назад +3

    📢🔥🔥What is the space complexity??????
    Is it O(N) cuz at max there would be N revursive call waiting in the stack. (there are n+1 levels in the stack space tree).
    Plz clarify

  • @akshatjain3484
    @akshatjain3484 6 месяцев назад

    one of the best explanation!!!!!!!!

  • @funnythings8603
    @funnythings8603 7 месяцев назад +3

    why sum is not minus when we came back and go to not pick option?

  • @daksh8055
    @daksh8055 2 года назад +2

    I have a doubt that when do we make the helper function return something and when do we not return anything, would it be possible if in this solution the 'func' functions return the final arraylist?

  • @yogeshvaishnav6464
    @yogeshvaishnav6464 3 года назад +8

    You said TC of recursive solution is 2^N + 2^N log (2^N), isn't it equal to 2^N + N*2^n(log 2) = N*2^N + 2^N = O(N * 2^N) same as iterative one?

  • @ishanmoykhede9484
    @ishanmoykhede9484 9 месяцев назад

    solved in 8 min just by reading problem statement ❤‍🔥❤‍🔥❤‍🔥

  • @ompandey8470
    @ompandey8470 3 года назад +2

    congratulations bhaiya apka google me hogya na!, Main bhi aa rha hu jldi hi milte hai

  • @HarshitMaurya
    @HarshitMaurya 2 года назад

    looking at these combination problam at saying abhi to ye sb bhaiya ye padhaya subsequences me tha and then i tried myself and got ac , best feeling ever

  • @Malayalam_learner
    @Malayalam_learner 10 дней назад +1

    I had a question for you
    Striver or any one in comments section
    Sum+=arr[ind]
    Func(ind+1,sum,n,subset)
    Sum-=arr[ind]
    Func(ind+1,sum,n, subset)
    Is this procedure correct?
    Correct me if I'm wrong

    • @SRoy2700
      @SRoy2700 День назад

      yeah absolutely correct

  • @fivexx469
    @fivexx469 2 года назад +2

    do we even need to sort the array ,as it is not asked in the question?

  • @Bharat_Rider
    @Bharat_Rider Год назад +1

    If someone does this tracing for merge sort till the end his confidence increases a lot in recursion

  • @lakshsinghania
    @lakshsinghania Год назад

    thnks bhaiya i was able to do combination sum 3 on my own only because of u

  • @Sarkar.editsz
    @Sarkar.editsz 2 года назад

    Thanks a lot , i did this question all by myself becoz of your videos and your guidance , thanks a lot

  • @anubhabpaul7160
    @anubhabpaul7160 Год назад +2

    Can anybody tell.. why we r not doing sum-arr[i] when we r returning... so the previous sum dont add... as we do in other subset problem

    • @CodeRocks-z6g
      @CodeRocks-z6g 7 месяцев назад +2

      we are passing sum+arr[i] directly so when recursion return and goes to not take f(ind,sum) sum is passed not sum+arr[ind]

  • @chetanguduru
    @chetanguduru 2 года назад

    I have done using this method. Does this have any down side? There is no requirement of sorting here
    vector subsetSums(vector arr, int N)
    {
    if(N == 0)
    {
    vector ans;
    ans.push_back(0);
    return ans;
    }
    vector output = subsetSums(arr,N-1);
    int size = output.size();
    for(int i=0;i

  • @atharvakulkarni2024
    @atharvakulkarni2024 3 года назад +3

    BHAIYYA PLEASE EK REQUEST HAI EK VIDEO ISPE BHI BANAO DEPTH ME KI HUM POP BACK KAB KARTE HAI BACKTRACK KE TIME USME BOHOT CONFUSION HO RAHA HAI

  • @vyankateshkulkarni4374
    @vyankateshkulkarni4374 2 года назад

    Thanks striver. you made understanding so easy. thanks brother

  • @AmanKumar-dl8os
    @AmanKumar-dl8os Год назад

    we can remove the time complexity of sorting the solution by making the right sub-tree to the left and the left sub-tree to the right. Please try it once, this means swapping the recursive function calls.

  • @akshaykenjale2642
    @akshaykenjale2642 2 года назад +1

    So basically how we can differentiate between subsequence and subset, subsequence can be like which follows order of array, but then too need some more points

  • @mohitkumarbansal3486
    @mohitkumarbansal3486 3 года назад +1

    I really afraid of this questions but when I see your video some magic happen

  • @shashankpandey6230
    @shashankpandey6230 Год назад

    instead of storing it in arraylist we can use treeset to reduce the extra overhead of sorting the list

    • @vishious14
      @vishious14 Год назад

      TreeSet would still take logN time to insert each sum. So for n subsets sum it'll take n*logn time, which is same as sorting the final container.

  • @chad._life
    @chad._life 3 месяца назад

    class Solution {
    public:
    void subset_sum(int ind,vectorarr,vector&ans,int sum,int n){
    if(ind==n){
    ans.push_back(sum);
    return;
    }
    // case to pick an element to be added in sum
    subset_sum(ind+1,arr,ans,sum+arr[ind],n);
    subset_sum(ind+1,arr,ans,sum,n);
    }
    vector subsetSums(vector arr, int n) {
    vectorans;
    int sum =0;
    int ind =0;
    subset_sum(ind,arr,ans,sum,n);
    return ans;
    }
    };

  • @abhisheksa6635
    @abhisheksa6635 Год назад

    Because of the earlier videos and ruminating in my sleep, I could solve this, honestly I did one mistake that is keeping a vector storing the subset, should have saved a sum variable.

  • @jaskiratsinghosahan4638
    @jaskiratsinghosahan4638 3 года назад

    Crisp clear explanation 👍

  • @mayankjaiswal1492
    @mayankjaiswal1492 3 года назад

    man, this is a banger, thank you so much for this

  • @aysams2
    @aysams2 Год назад +1

    In the recursive fxn, why is the condition
    if( ind == N)
    and why not
    if( ind == N-1) as we're using 0 base indexing ???

    • @Lullurluli
      @Lullurluli Год назад

      It is zero based indexing but on function call we are incrementing ind + 1 so it will return as n == ind

  • @saketjaiswalSJ
    @saketjaiswalSJ Год назад

    //sum of subsets in sorted order
    //t.c is for every index i have two choice pick and not pick for example i have 3 indxes the i will
    //have total 6 choices p/np for each indexs hence for n indexes i will have 2^n choicess
    //also there is extra 2^n*log(2^n) t.c for sorting the ans array hence total t.c is (2^n * 2^n *log(2^n))
    class Solution
    {
    public:
    void solve(vector &a, int index,int s,int N,vector &ans)
    {

    if(index==N)
    {
    ans.push_back(s);
    return;
    }
    //picking element from the index
    solve(a,index+1,s+a[index],N,ans);
    // s=s-a[index];aisa kuch nhi hoga s datastructure nhi hai
    //s ek simple variable hai samjha kuch nhi krna hai //decreasing the sum //simple backtrack
    //pick notpick ka function easily call ho jayega samjha be
    solve(a,index+1,s,N,ans);

    }
    public:
    vector subsetSums(vector a, int N)
    {
    vectorans;
    int index=0;
    int s=0;
    solve(a,index,s,N,ans);
    sort(ans.begin(),ans.end() );
    return ans;
    }
    };

  • @parthsalat
    @parthsalat 2 года назад +3

    C++ code at 23:50
    Complexity analysis at 20:05

  • @Anjaliojha-o2l
    @Anjaliojha-o2l 3 месяца назад

    agar hmlog given array ko phle hi sort kr de decreasing order me aur not pick wala function call pick wale function call k phle rkh de, to hme apne ans ko alag se sort krne ki jarurat nahi pdegi, and aise hm 2^n*log(2^n) T.C ko n*logn se optimise kr skte h.

  • @vikramjha4
    @vikramjha4 Год назад

    Can't thank you enough for these videos!

  • @VY-zt3ph
    @VY-zt3ph 2 года назад

    The space complexity here will be of O(N) because that will be the depth of the recurs ion tree.

  • @prabhakaran5542
    @prabhakaran5542 7 месяцев назад +1

    Understood ❤

  • @kaichang8186
    @kaichang8186 3 месяца назад

    understood, thanks for the perfect explanation

  • @sonalisinha325
    @sonalisinha325 Год назад +1

    why have you not used sum = sum-arr[index] before 19 statement

  • @ritikshandilya7075
    @ritikshandilya7075 9 месяцев назад

    Thankyou so much for great content Striver

  • @ankursingh8296
    @ankursingh8296 2 года назад

    Sort array in reverse order and do not take first and next call for take this way we get sum in inc order automatically..I am assuming all elts to be distinct..tc 2^n and SC is 2^n

  • @neyovyas3992
    @neyovyas3992 3 года назад

    Please try to upload video daily and love your videos and explanation too much

  • @thexhist3609
    @thexhist3609 2 года назад +1

    whats the difference between recursion of subsequence and subset , isn't both of them same

  • @roliagrawal3124
    @roliagrawal3124 Год назад

    Just one confirmation i need incase of list we remove last element and incase of variable we just return it. It happens because of pass by value and pass by reference?

  • @paulbarsha1740
    @paulbarsha1740 2 года назад

    understood sir, but why we are sorting it again in the main function? i saw this in the documentation of this problem
    int main() {
    vector < int > arr{3,1,2};
    Solution ob;
    vector < int > ans = ob.subsetSums(arr, arr.size());
    sort(ans.begin(), ans.end());
    cout

  • @leo-x1d1f
    @leo-x1d1f 3 года назад

    best think of striver bhaiyya videos is promotion tell (time) so we can skip promotion easily every youtuber have to do this

  • @madhurgupta3849
    @madhurgupta3849 2 года назад

    I think It can be done in single recursive call.
    vector subset(vector &num,int i)
    {
    // Write your code here.
    vector ans;
    if(i==num.size()){
    ans.push_back(0);
    return ans;
    }
    ans = subset(num,i+1);
    int size=ans.size();
    for(int j=0;j

  • @dheerajnahariya9494
    @dheerajnahariya9494 3 года назад

    Good to see you after long time bhaiya

  • @pirangitharun8736
    @pirangitharun8736 3 года назад +1

    Can be done in 3 ways [Bit manipulation, DP, Recursion]

    • @takeUforward
      @takeUforward  3 года назад +6

      Dp wont be possible as you need to print sums so you need to go to the depth always.

    • @pirangitharun8736
      @pirangitharun8736 3 года назад

      ​@@takeUforward Thanks for the mention bro

  • @jha.brajesh
    @jha.brajesh 10 месяцев назад

    2:20 GFG edited their expected space complexity

  • @shivamsrivastava1017
    @shivamsrivastava1017 Год назад

    Are we allowed to return same sum multiple times in the array if sum of different subsets is the same

  • @Suryansh_Goel.
    @Suryansh_Goel. 3 месяца назад

    sorting the given array in decreasing order and doing not pick before pick will reduce the time complexity a little as the final answer will not need sorting

    • @pratyushdixit9828
      @pratyushdixit9828 12 дней назад

      Arey sort to kia na then how will it reduce TC?

  • @parthsalat
    @parthsalat 2 года назад +1

    Where's the link for the power set?

  • @aravindben6254
    @aravindben6254 Год назад

    The below code avoids sorting and has O(2^n) time complexity instead of O(2^n)+O(2^n log(2^n))
    void comb(vector &sums, vector &arr, int i, int n, int sum){
    if(i>=n){
    sums.emplace_back(sum);
    return;
    }
    comb(sums,arr,i+1,n,sum);
    comb(sums,arr,i+1,n,sum+arr[i]);
    }
    vector subsetSums(vector arr, int N)
    {
    // Write Your Code here
    vector sums;
    comb(sums,arr,0,N,0);
    return sums;
    }

  • @GeneralistDev
    @GeneralistDev Год назад

    void dfs(vector &nums,vector &ans,int idx, int sum){
    if(idx>=nums.size()){
    ans.emplace_back(sum);
    return;
    }
    // take
    dfs(nums,ans,idx+1,sum+nums[idx]);
    // not take
    dfs(nums,ans,idx+1,sum);
    }
    public:
    vector subsetSums(vector arr, int N)
    {
    vector ans;
    dfs(arr,ans,0,0);
    return ans;
    }

  • @amityadav-km5rx
    @amityadav-km5rx Год назад

    Very Nice Lecture

  • @gollapallyvinaykumar
    @gollapallyvinaykumar 11 дней назад

    Where can I find the powerset solution link?

  • @apoorvgupta1211
    @apoorvgupta1211 Год назад

    Hey Striver, Big fan and thank you for the amazing series, but in this question, we are asked about subsets and what you have explained is the solution for subsequences. In your video on subsequences, you had explained the difference between subsets and subsequences - "Subsequences can be contiguous as well as non-contiguous but subsets are always contiguous". This point can also be observed if we go to the problem link and see the examples mentioned.

  • @037_sayedramishali7
    @037_sayedramishali7 3 года назад

    Well explained bhai👍

  • @rpriyanka28
    @rpriyanka28 9 месяцев назад +1

    he is the definition of handsome with brains!!

  • @dhananjaysingh3675
    @dhananjaysingh3675 2 года назад

    Very Helpful 🙏

  • @chiragarora870
    @chiragarora870 3 года назад +3

    Sorting isn't required, driver code is automatically sorting our array

  • @vashishthsharma4411
    @vashishthsharma4411 2 года назад

    thank you bhaiya 😇😇😇😇

  • @aftabansari3845
    @aftabansari3845 2 года назад

    Submitted successfully w/o sorting the result array.

  • @siddhartharathour1802
    @siddhartharathour1802 Год назад

    if we call the function that does not include first element in current sum and then call second function. then we will get subset sum in sorted order than there is not need to sort. public void ss(ArrayList arr, int n,int sum,ArrayList sub){
    // code here
    if(n==arr.size())
    {
    sub.add(sum);
    return ;
    }
    ss(arr,n+1,sum,sub);
    ss(arr,n+1,sum+arr.get(n),sub);
    }

  • @TheElevatedGuy
    @TheElevatedGuy 2 года назад +1

    can we store ans in a multiset and covert to vector and return.
    By the way thank you very mush for this playlist.

  • @shyamaprasadmohanty6215
    @shyamaprasadmohanty6215 Год назад

    Note: You don't need to explicitly backtrack here because the recursive stack itself takes care of the variable sum's state!

  • @pratyushdixit9828
    @pratyushdixit9828 12 дней назад

    Can we reverse the resultant subset sum array?