L6. Recursion on Subsequences | Printing Subsequences

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 ก.ย. 2024
  • Check our Website:
    In case you are thinking to buy courses, please check below:
    Link to get 20% additional Discount at Coding Ninjas: bit.ly/3wE5aHx
    Code "takeuforward" for 15% off at GFG: practice.geeks...
    Code "takeuforward" for 20% off on sys-design: get.interviewr...?_aff=takeuforward
    Crypto, I use the Wazirx app: wazirx.com/inv...
    Take 750 rs free Amazon Stock from me: indmoney.oneli...
    Earn 100 rs by making a Grow Account for investing: app.groww.in/v...
    Linkedin/Instagram/Telegram: linktr.ee/take...
    ---------------------------------------------------------------------------------------------------------------------------------------------------- Please check out the entire channel for other sets of series on tougher and complex topics. Also do consider subscribing :)
    Please check out the SDE sheet which the entire country is using and getting placed at top-notch companies: takeuforward.o...
    Checkout Striver's Handles: linktr.ee/take...

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

  • @jaimitkumarpanchal7603
    @jaimitkumarpanchal7603 ปีที่แล้ว +232

    Man i usually don't comment on TH-cam videos, but i just solved 3 medium level questions in under 20 mins. Damnnnnnnn i have no words to express. but this video specifically is a gem to solve most of the recursion sub-seq problem.
    Thank you so much 😄
    Edit : i have watched this video 2-3 months back(December) for dynamic programming, till this day i remember every detail of the video.

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

      from sklearn.pipeline import Pipeline
      import sklearn.svm
      from sklearn.linear_model import LogisticRegression
      knn=KNeighborsClassifier(n_neighbors=8)
      rfc=RandomForestClassifier(max_features=2,n_estimators=64,bootstrap=False,oob_score=False)
      svm = svm.SVC(kernel='rbf',C=1,gamma=1)
      lr=LogisticRegression(C=0.01,max_iter=100,penalty='l2')
      # define the pipeline
      # define the pipeline
      pipe = Pipeline([
      ('scaler', StandardScaler()),
      ('knn', knn),
      ('rfc', rfc),
      ('svm', svm),
      ('lr', lr),
      ('preds', FunctionTransformer(lambda x: x.predict_proba(x)[:,1].reshape(-1,1)))
      ])
      # fit the pipeline to your data
      pipe.fit(X_train, y_train)
      # predict on new data
      y_pred = pipe.predict(X_test)
      # evaluate the pipeline's performance
      accuracy = pipe.score(X_test, y_test)

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

      hii, may I know what are you doing right now

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

      @@stain5570 he is a SDE-3 at CornHub

  • @dgvj
    @dgvj ปีที่แล้ว +40

    Best series on recursion in the internet. Thanks alot for your time and effort.

  • @AbhinavKumar-tg4il
    @AbhinavKumar-tg4il หลายเดือนก่อน +10

    after watching 3 times, now understood. Those who are not able to understand, it's okay, retry, you will get it, and after that you will feel good.

  • @ShubhamSinghMr.s
    @ShubhamSinghMr.s ปีที่แล้ว +48

    JAVA CODE FOR THE SAME WILL BE ::-
    public static void main(String[] args) {
    int[] arr = { 3, 1, 2 };
    ArrayList list = new ArrayList();
    printSub(0, arr, list);
    }
    private static void printSub(int i, int[] arr, ArrayList list) {
    if (i == arr.length) {
    System.out.println(list.toString());
    return;
    }
    list.add(arr[i]);
    printSub(i + 1, arr, list);
    list.remove(list.size() - 1);
    printSub(i + 1, arr, list);
    }

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

      It helped me a lot bro

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

      Very helpful

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

      I do not understand one thing if we try to apply the same logic but when the return type is List this doesn't work cause instead we get an empty list when i == arr.length

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

      @@pehdntene6473 import java.util.ArrayList;
      import java.util.List;
      public class rec_subseq {
      public static void main(String[] args) {
      int[] arr={3,1,2};
      ArrayList list = new ArrayList();
      ArrayList li= new ArrayList();
      subseq(0,arr,list,li);
      System.out.println(li);
      //System.out.println(li.toString());
      }
      static ArrayList subseq(int i,int[] arr, ArrayList list,ArrayList li)
      {
      if(i>=arr.length)
      {
      li.add(list);
      return li;
      }
      list.add(arr[i]);
      subseq(i+1,arr,new ArrayList(list),li);
      list.remove(list.size()-1);
      subseq(i+1,arr,new ArrayList(list),li);
      return li;
      }
      }
      Try this

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

      Thank you brother 😊

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

    Brilliant explanation! I never quite understood this question before watching this video. The take/not take pattern is going to be in my head forever. Thank you so much! You're an amazing teacher :)

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

    Simple english....No confusions......... Great work

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

    THANK YOU BRO,
    BEST PART: YOU COmpletely connects with your audience and each and every step goes direclty into our brain and we understand everything.
    Thank You & keep it up

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

    indeed, it's a wonderful explanation. thanks for taking time and doing this for community

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

    Amazed by your lessons, i feel like i know recursion better than before, thanks bro.

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

    What a explaition strting from base case to dry run to recursion tree , Fully fantastic, even i used to code in java still noone can reach your level of explanation ❤🤘 Best video...

  • @jayeshbangar8373
    @jayeshbangar8373 ปีที่แล้ว +40

    JAVA Code-
    public static void sub(ArrayList al, int arr[], int i){
    if(i == arr.length){
    System.out.println(al.toString());
    return;
    }
    al.add(arr[i]);
    sub(al,arr,i+1);
    al.remove(al.size()-1);
    sub(al,arr,i+1);
    }

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

      with small correction
      public static void sub(ArrayList list, int arr[], int i){
      if(i == arr.length){
      if(list.size()>0){
      System.out.println(list.toString());
      }
      return;
      }
      list.add(arr[i]);
      sub(list,arr,i+1);
      list.remove(list.size()-1);
      sub(list,arr,i+1);
      }

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

      thanku so much brother

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

    This guy makes recursion look easy and fun. Kudos to you! Amazing job, very inspiring!

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

    If we want to avoid the remove part, we can first call without adding and then add the element and call function again with the added element in the vector.

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

      if you want to remember it like using " take " and "not take " you should follow that

    • @NitishKumar-yy9kn
      @NitishKumar-yy9kn หลายเดือนก่อน

      if we pass the vector by value, removal will not be needed

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

    Best thing is you have very deep understanding of the topics and you code your own way. While other videos mostly pick code from GFG and explain which goes above head. Thanks for lovely explanation.

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

      Huh

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

      The code for printing string subsequences.
      package Recursion_2;
      import java.util.ArrayList;
      public class Subsequences {
      public static void main(String[] args) {

      String s="abcd";
      char[] c=s.toCharArray();
      print_string_subseq(new ArrayList(),0,c,s.length());
      }
      public static void print_string_subseq(ArrayList al,int ind,char[] c,int n)
      {
      if(ind>=n)
      {
      if(al.size()==0)
      System.out.print("{}");
      for(char t:al)
      {
      System.out.print(t);
      }
      System.out.println();
      return;
      }
      print_string_subseq(al,ind+1,c,n);
      al.add(c[ind]);
      print_string_subseq(al,ind+1,c,n);
      al.remove(al.size()-1);
      }
      }
      Output :
      {}
      d
      c
      cd
      b
      bd
      bc
      bcd
      a
      ad
      ac
      acd
      ab
      abd
      abc
      abcd

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

      He is unique XD

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

      Yup, also some just mug up from chatgpt and code .

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

    after this video I solved subset sum pretty easily. Thank for your crystal clear explanation

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

    I have seen soo many videos for this problem and never understood anything but your explanation it was awesome it gave me confidence to solve any problem of this kind(take or not take). Thankyou Striver sir!

    • @ShubhamKumar-sj6dp
      @ShubhamKumar-sj6dp ปีที่แล้ว +1

      or it could be opposite , since you tried it many times , this was the time it clicked , it would have been same if you would have watched this video first and other video would have clicked !!!!!!

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

    I had to watch this video for more than 5 times.
    God bless you bro

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

    Thankyou STRIVER, for explaining the subsequence problem in a awesome manner.

  • @SumitTiwari-f7t
    @SumitTiwari-f7t หลายเดือนก่อน

    Thankyou for making videos of recursion and covering all topics. It gives me confidence and boost-up in my rating.

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

    I have a small doubt, during 3rd recursive call the list is [3,2,1] and i value is 3. Now as i= arr.length, we print the list. After that to back track, we remove recently added element which is 2. Now the list becomes [3,1] but the i value doesnt change. It remains same 3.and after removing, we did sub(al,arr,i+1) which is sub([3,1],arr,4).im confusing here

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

      When we reach I=3 we actually increase for the branch which is going through right side for left side branch also we get I=3 only because we had called the both right side and left side branches in same function which is f(2, {3, 1}). Just go with tree and you can easily understand

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

    I can understand the code, but i can't able to think recursively on my own to code. Is there any solution for this

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

      try to draw the recursive tree like him to get flow with the recursion

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

      Try and fail then google is the only way I was in your position but today I conquered the recursion wholly. All the best bud

  • @jitendrakumar-vv8ho
    @jitendrakumar-vv8ho ปีที่แล้ว +49

    it was quite difficult to understand

    • @PIYUSHTAILORstillalive
      @PIYUSHTAILORstillalive 4 หลายเดือนก่อน +3

      no problem.
      [] and arr[] are different and need to be passed through the recursion.In the explanation it might have confused.

    • @pranaycc
      @pranaycc 2 หลายเดือนก่อน +4

      Do the dry run buddy, recursion is all about stack tracing and tree tracing 9:50

    • @jitendrakumar-vv8ho
      @jitendrakumar-vv8ho 2 หลายเดือนก่อน

      @@pranaycc thanks for your advice buddy but internship season is going on and i am unable to solve questions in OA round can you help ???

    • @Jonathan-be7gj
      @Jonathan-be7gj หลายเดือนก่อน

      ​@@pranayccthat is not the problem, problem is why We r stacking 3 over 2 and 1...also how first person came with this solution

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

    this has been beautifully explained ..I've been searching for this explanation for hours now and this was good

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

    I watched it once didn't understand, but after that watched again by following him with a pen and paper and understood completely.

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

    Is Subsets and Subsequence means same thing???

    • @saurabhtamta7295
      @saurabhtamta7295 14 วันที่ผ่านมา

      Susbets don't have to maintain order of the original sequence while subsequence do

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

    Earlier I was learning recursion and dynamic programming together and that was my mistake. Thanks for creating this playlist and awesome explanation.

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

      Uh are write in which language Cpp Or java

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

      I wrote in java bt i faced an error working with array and list

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

      @@azaanakhtar1974 CPP

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

      @@azaanakhtar1974 Try this:
      static void findSubsequence(int index, int[] array, ArrayList arrayList) {
      if(index == array.length) {
      System.out.println(Arrays.toString(arrayList.toArray()));
      return;
      }
      arrayList.add(array[index]);
      findSubsequence(index+1, array, arrayList);
      arrayList.remove(arrayList.size() - 1); //need to remove last element
      findSubsequence(index+1, array, arrayList);

      }

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

      @@ratanmasanta3210 thanks buddy

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

    Thanks a lot sir,I have been frustrated since a long time because of recursion ,it felt impossible for me to solve any leetcode problem but after your series i feel more confident in approaching any backtracking problem.You just don't explain a solution for a particular problem but a solution which can be modified and used for any other similar problem.

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

    Excellent explanation, itni baar dekhne ke baad it is even possible to watch at 3x and revise easily, which is amazing.

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

    Man! This is crazzyyyy!! I never really comment on TH-cam. But this is some next level shit ! I kept memorizing the subseq code as I was sure i would never understand this. But you have finally made it clear and I dont need to memorize it ! Its pretty straight forward! Thanks a ton😊❤

  • @RishabhJain-iz5xk
    @RishabhJain-iz5xk 2 ปีที่แล้ว +2

    HANDS DOWN BEST EXPLANATION ON INTERNET!

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

    Hey Striver, Could you also please attach the link of the respective leetcode questions?

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

    Finally it's crystal clear... After watching this video 3-4 times

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

    if I don't pass the vector &ds as reference then I don't have the need to ds.pop_back() correct ??

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

      Then it creates a new copy everytime, which will lead to tle :(

  • @madhujustin2124
    @madhujustin2124 28 วันที่ผ่านมา +1

    STARTED YESTERDAY, IT CAN BE HELPFUL FOR THOSE WHO STARTED NOW...LIKE ME... PYTHON CODE FOR THE SAME IS: def subseq(index, current,arr):
    if index >= len(arr):
    print(current)
    return
    current.append(arr[index])
    subseq(index+1, current,arr)
    current.pop()
    subseq(index+1, current,arr)
    arr = [3,1,2]
    index=0
    subseq(index, [ ] ,arr)

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

    02:18 Generate all subsequences for an array using recursion
    04:36 Understanding the structure and pattern of code is crucial for solving problems.
    06:50 Code implementation to create a subsequence using recursion.
    09:16 By making recursive calls with different indices and choosing whether to include the last element, you can generate all possible subsequences of an array.
    11:27 Remove elements from an array based on specific conditions.
    13:39 Understanding the concept of adding and removing items in a sequence
    15:42 Printing the values in a recursion tree
    17:46 Printing subsequences using recursion
    19:38 Print a data structure to display the subsequence
    21:20 The algorithm involves picking or not picking elements from a given array.
    23:10 Time complexity is 2^n and space complexity is O(n)

  • @sagarsinha6561
    @sagarsinha6561 9 หลายเดือนก่อน +2

    Hey Striver, your approach is superb. However, I have followed another strategy which is more intuitive for me, the code for which is: def fn(i, n, arr, osf):
    if (i >= n):
    print(osf)
    return

    fn(i+1, n, arr, osf)
    fn(i+1, n, arr, osf+str(arr[i]))

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

      In your way, it can be termed as don't pick-pick strategy (yours being pick/remove) 😅

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

    Understood. will complete recursion today no matter how much time it takes.

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

    It will be so cool if you can add the codes in the description!

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

    Thank you so much! You're an amazing teacher :)

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

    Just don't stop uploading anytime you feel you are not getting enough views.
    Good Luck.

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

    Apart lecture..vdo end m jo gaane ki tune chlti h.. like it..😂😂❤

  • @sriramrajkumar2774
    @sriramrajkumar2774 7 หลายเดือนก่อน +2

    Anyone clear me this doubt. At 22.38 striver changed not pick first then picked second i thing the pop_back is not necessary. Am i correct?

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

      i have same doubt couldnt understand that

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

    I have understood it extremely well. Thank you sir.

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

    thank u so much striver ! i was struggling with this one and i finally understood this using recursion tree.. THANK YOUUUUUUU

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

    one of the beautiful play list for recursion on you tube

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

    Awesome man, love your explainatiton.

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

    That really was one of the best way to explain sub-sequence.

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

    Now I understand this subsequence, after watching famous courses of CN, CB, I don't understand from them that deeply

  • @Yash-uk8ib
    @Yash-uk8ib 2 ปีที่แล้ว +3

    Sir, i can understand that i==n will be a base case but i>n will not happen.. as soon as i reaches n, it will return.
    I>=n is not making any sense to me.
    Correct me if I am wrong!!

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

      Ha shi h tu bhi i==n hi shi h

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

      I had the same doubt but I think the idea is i>= n (already contains i == n ) , the greater than sign is for extra precaution I guess or maybe because Bhaiya from the starting is teaching i>= n , in all his previous video ... maybe he want to show continuity in his code and teaching style

    • @Yash-uk8ib
      @Yash-uk8ib 2 ปีที่แล้ว

      @@shauryatuli2241 ok

  • @Ayushkumar-co9mc
    @Ayushkumar-co9mc 3 หลายเดือนก่อน

    Thanks a lot sir, now its crystal clear i made 2-3 recursion trees by my own it took me an hour but now its very clear.

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

    thank you so much for the recursive tree it helped a lot

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

    The best explanation ever exist on the youtube.

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

    Bhai tum mahan ho. Samaj aa gaya.

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

    Why can't we first not take and then take which saves our .remove() complexity?

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

      yes we can do this

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

      No, we cannot skip the .remove() even if we first do "not take" and then do "take" because if the element is not removed after the take, it will remain in the ds vector and will affect the combinations that come after that. Striver has explained it at 22:22 .

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

      @@miragranger4685 got it, thanks a lot

    • @the.arty.heart_
      @the.arty.heart_ 2 ปีที่แล้ว +2

      @@miragranger4685 We can actually skip .remove() , by receiving ds vector without reference

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

    First of all, AMAZING and very helpful video. Thank you for all your effort.
    P.S. am I the only one who notices that he uses 'a couple of options' to tell us we have specifically 2 options. Not hating at all but I just got so confused at first haha.

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

    You are taking great efforts and we are learning from you Striver.

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

    Super explanation sir .Thank you so much❤️

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

    Explanation was good but have one question though why we need to create res.add(new ArrayList(ans)); everytime new arralist?

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

    Java code to find for Subsequences of given string...
    public static void main(String[] args) {
    String str = "abcd";
    ArrayList results = new ArrayList();
    gss(str, 0, new StringBuilder(), results);
    System.out.println("Number of subsequnces:" + results.size());
    System.out.println("subsequnces:" + results);
    }
    private static void gss(String str, int idx, StringBuilder subSeq, List results) {
    if (idx >= str.length()) {
    results.add(subSeq.toString());
    return;
    }
    subSeq.append(str.charAt(idx));
    gss(str, idx + 1, subSeq, results);
    subSeq.deleteCharAt(subSeq.length() - 1);
    gss(str, idx + 1, subSeq, results);
    }

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

    I have a little curious question that why to remove them later why not first make the recursive call without taking the element and then later add it then made the recursive call ? If Order is not Important of the sub-sequences.

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

    Thanks a lot for this priceless video!

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

    mad respect to this man for keeping it super simple

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

    why does the vector have to be passed by reference? at 20:07

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

    hey!! Quick question why do we need to have f(i+1, arr[]) after removing the last element we added? cause the value of index is already 3 right . So, wouldn't it work with f(i, arr[]) ????

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

      yes because when you do i+1 it will only increment inside that called function but outsite the function it is still 2

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

    after watching 5 times with paralally coding ..now i finally understand the whole concept of take and not take lol😆

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

    Watched the intermediate few minutes thrice and finally understood , lesson I learn't : sometime we need a small self-upgradation to understand the educator , not always the teacher(educator) is bad .

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

    Thank you so much. Worthy Content!!

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

    Can we call just before addition and after addition? Why are we removing it?

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

    java code : if (index >= n) {
    System.out.println(list);
    return;
    }
    // Include the current element in the subset
    list.add(arr[index]);
    printSub(arr, list, n, index + 1);
    // Exclude the current element from the subset
    list.remove(list.size() - 1); // Remove the last element (backtrack)
    printSub(arr, list, n, index + 1);
    }

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

    Java Code :-
    public static void func(int i,List a,List arr)
    {
    if(i>=arr.size())
    {
    System.out.println(a);
    return;
    }
    a.add(arr.get(i));
    func(i+1,a,arr);
    a.remove(arr.get(i));
    func(i+1,a,arr);
    }
    }

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

      thank you

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

      i was looking for the same
      thanks

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

      Bro,thnaks for this..But I am facing some problem while taking the input as array..
      Error:For 2 it is showing out of bound index..Anyone help me out in this,issue??Thanks in advance
      My code:
      /**
      * PrintAllSubsequence
      */
      import java.util.*;
      public class PrintAllSubsequence {
      static void printSubsequence(int index,ArrayList res,int arr[]){
      if(index==arr.length)
      {
      System.out.println(res);
      return;
      }
      //taking the arr input
      res.add(arr[index]);
      printSubsequence(index+1, res, arr);
      //not taking the array input
      res.remove(arr[index]);
      printSubsequence(index+1, res, arr);
      }
      public static void main(String[] args) {
      int []arr={3,1,2};
      ArrayList res=new ArrayList();
      printSubsequence(0, res , arr);

      }
      }

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

      @@hrithikrudra4292 change your res.remove(arr[index]); statement with res.remove(new Integer(arr[index]));
      arrayList have 2 remove method one with index and other with object.
      res.remove(arr[index]); this statement try to call remove with index because arr[index] giving int and Collection only work with objects. Because of this you are getting outofbound. Either use new Integer(arr[index]) or convert int []arr={3,1,2} to arraylist

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

      @@swapnilnandedkar3930 thanks,bro..👌👌

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

    Thanks you so much sir for this wonderful content ,i loved with recursion sir 🙏🙏

  • @PawanSingh-ck2jv
    @PawanSingh-ck2jv 2 ปีที่แล้ว

    this code is giving output as 198 but bool value should only return 0 or 1.
    also i know that i can get correct output by using & variable as &s.
    #include
    using namespace std;
    bool palindraom(int i,int j,string s){
    if(i>j)return 1;
    if(s[i]!=s[j])return 0;

    palindraom(i+1,j-1,s);
    }
    int main(){
    string s="non";
    bool k=palindraom(0,2,s);
    cout

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

    You have to keep it in your head everyday till your . retirement......

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

    Hi Striver, I am watching your recursion video from starting, Now I know how recursion works but how to make recursive function is what I didn't get. I understood the concept but after looking at some random question how I gonna make recursive call that I ddn't understand. I will be completing this series and hope by the end I know to make recursive function.

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

    I have one doubt for eg:f(2,[3])=>take f(3,[3,2])=>not take [3,2].remove(a[2]) here is my doubt the array as two elements[3,2] then how we remove a[2] ?? array has ony two elements[3,2] then the index are 0,1.

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

      Exactly same doubt !!!

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

      @@consolecoder6724 In their explanation video they taught us to remove(a[i]) in code simply use pop()method to remove the last element in an array. It works well👍

    • @riddle-manch
      @riddle-manch 2 ปีที่แล้ว

      @@sudharshan3863 instead of using list.remove(index) use list.remove(list.size()-1)

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

    Thanks striver
    After watching it from all the tutors on youtube
    Finally i conclude you are a true gem 🤍 bro...
    will definitely meet you one day insha allah

  • @AmarjeetKumar-to9ub
    @AmarjeetKumar-to9ub ปีที่แล้ว +1

    // Is it correct ?
    string s="Hello";
    void solve(string t,int i){
    if(i==s.size()) { cout

  • @ElonMusk-ez5xz
    @ElonMusk-ez5xz 2 ปีที่แล้ว +2

    So this comes under parameterized recursion correct?

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

    May God bless you with all the health and wealth you need. I understood it.

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

    amazing teacher thank you so much :)

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

    Super Clear, Great Effort
    Always thankful to you sir

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

    Great Explanation sir i feel the recursion today

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

    can you please explain how space complexity is O(n) ?

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

    slight iteration error in the recursion tree , f(3,[1,3]) will directly return to f(1,[3]) and cant evaluate if f(2,[3,1]) is done or not

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

      bhai adityA verma se krlu ?

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

    Aur tarakki mile aapko bhai, kya samjhate ho

  • @RahulGupta-dc1su
    @RahulGupta-dc1su 7 หลายเดือนก่อน

    Hey , what if call recursion call for not including the element before addition function call, the I think , there is no need to remove the element .

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

    Why did we pass vector as a reference in the implementation?

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

    Hii striver!
    I've been learning recursion since the last 2 months, but i am still facing problems bro, i can't "Think" in the recursive way, like i can't approach a problem with recursion in mind, how should I learn the way of thinking? I've been practicing but no progress, should I just leave recursion and focus on other algorithms without recursion? (I'm in my 4th sem)

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

      all recursive solutions can be done using iteration but the vice versa is not true.

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

      look if you have already given recursion more than 1 month , I think you should move forward now because when you will learn trees graphs and dp it will strengthen your recursion . This happens with most of the coders so just move forward and keep learning .

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

      @@unknownuser8912 I have skipped graph for this year, will learn that after getting a bit better in CP. Is it wrong? Should I learn it now?

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

      @@treedash1653 skipping graph for focusing on cp is okay but make sure once you feel comfortable with cp ,you are completing graph , as it is one of big3's(tree,dp and graph) .Also you will require knowledge of graphs when you reach expert .

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

    Amazing, lost for words 👏🏽👏🏽👏🏽

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

    pls do complete dry run, i hope you understand it becomes more complex as you move forward, and that is where it becomes difficult to understand.Thanks

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

    For Java lovers:
    In Java, ArrayList does not have pop feature so you can use a Stack
    Hope this'll help someone!
    import java.util.Stack;
    public class Striver {
    //functional way
    public static void main(String[] args) {
    int[] inpArr= {5,7,8};
    Stack res=new Stack();

    print(inpArr,0,res);

    }
    private static void print(int[] inpArr, int i, Stack res) {

    if(i==inpArr.length) {
    res.forEach(s->System.out.print(s+" "));

    if(res.isEmpty()) {
    System.out.println("{}");
    }
    System.out.println("");


    return;
    }



    //do
    res.add(inpArr[i]);

    //recur add a element
    print(inpArr, i+1, res);
    //undo
    res.pop();

    //not add
    print(inpArr, i+1, res);

    }
    }

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

      You can use arr.remove(arr.size()-1); to remove from arraylist.

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

    so if I understood it right, because list is a mutable data structure, we have to do the remove step so that we can get back our original list. Is that right ?

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

    Not getting the space complexity. Please explain in further details if possible. Thanks!

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

    No one can beat this Explanation.

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

    loved it, thank you so much :)

  • @AbhishekGupta-kn3cz
    @AbhishekGupta-kn3cz 24 วันที่ผ่านมา

    Dint understand why time complexity is 2^n * n and not just 2^ n. Any help anyone?

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

    striver content 💥 >>>

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

    Lol learning DSA is like anime training, once in a while we get powerups like these.

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

    Can you pls discuss the code for printing the subsets in lexicographical order? Interviewbit asks for ordered printing whereas other sites don't.

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

      I think if you sort the array before this algo, you will get lexicographical.

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

      @@gauravkr74 No it doesn't work like that, do check out interviewbit if you want to understand my question.

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

      Store it some vector instead of printing, and at the end sort and return it

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

      @@takeUforward I did that to solve the question after watching your code beyond stream but there was a solution in the editorials which didn't require sort. I know TC wise it doesn't make any difference but time wise it does, so just want to understand the logic behind it.

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

      @@vaibhav_singhal It might have used Priority Queue (not STL) to store the data then it doesn't require to sort the data.

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

    Thank you so much for amazing explanation.