Longest Common Subsequence (LeetCode 1143) | Full Solution with a natural explanation

Sdílet
Vložit
  • čas přidán 20. 08. 2024

Komentáře • 37

  • @anushakatika9229
    @anushakatika9229 Před 8 měsíci +3

    Great explanation. I have seen many dp solution but nobody explanation as clearly as you did

    • @nikoo28
      @nikoo28  Před 7 měsíci

      Happy you feel this

  • @ashok2089
    @ashok2089 Před 10 dny

    Thanks for clearly explaining DP Bottom up approach in normal array traversal instead of reverse traversal. Thanks!

  • @Usseeer_kaizen
    @Usseeer_kaizen Před 5 měsíci +1

    great approach, thanks teacher, the best explanation I have ever seen

  • @Hayat26474
    @Hayat26474 Před 6 měsíci +1

    your way of teaching is just great sir , Thanku !!

    • @nikoo28
      @nikoo28  Před 5 měsíci

      Thanks and welcome

  • @ishaqniloy1532
    @ishaqniloy1532 Před 6 měsíci +2

    Best explanation ever!

  • @urvashichaurasia6284
    @urvashichaurasia6284 Před 17 dny

    Great explanation sir .
    Please start a playlist of hard DSA problems.

  • @sheikhmkrifat7749
    @sheikhmkrifat7749 Před měsícem

    class Solution {
    public int longestCommonSubsequence(String text1, String text2) {
    // Ensure text1 is the longer string to minimize space usage
    if (text2.length() > text1.length()) {
    return longestCommonSubsequence(text2, text1);
    }
    // Convert strings to character arrays for easy access
    char[] s1 = text1.toCharArray();
    char[] s2 = text2.toCharArray();
    // Create two arrays to store the lengths of longest common subsequences
    int[] previousRow = new int[s2.length + 1];
    int[] currentRow = new int[s2.length + 1];
    // Loop through each character in s1
    for (int i = 0; i < s1.length; i++) {
    // Loop through each character in s2
    for (int j = 0; j < s2.length; j++) {
    // If characters match, increment the length from the previous row and previous column
    if (s1[i] == s2[j]) {
    currentRow[j + 1] = previousRow[j] + 1;
    } else {
    // If characters don't match, take the maximum length by ignoring one character either from s1 or s2
    currentRow[j + 1] = Math.max(currentRow[j], previousRow[j + 1]);
    }
    }
    // Swap rows: currentRow becomes previousRow for the next iteration
    int[] temp = previousRow;
    previousRow = currentRow;
    currentRow = temp;
    }
    // The length of the longest common subsequence is in the last element of previousRow
    return previousRow[s2.length];
    }
    public static void main(String[] args) {
    Solution solution = new Solution();
    // Test cases
    System.out.println(solution.longestCommonSubsequence("abcde", "ace")); // Output: 3
    System.out.println(solution.longestCommonSubsequence("abc", "abc")); // Output: 3
    System.out.println(solution.longestCommonSubsequence("abc", "def")); // Output: 0
    }
    } this is true dynamic solution

  • @acthanger7420
    @acthanger7420 Před 6 měsíci +1

    you are such a nice teacher)

  • @vivekkumaryadav9862
    @vivekkumaryadav9862 Před rokem +1

    Thanks a lot sir ..u make hard ques in easy way

  • @hoddybhaba6704
    @hoddybhaba6704 Před rokem +2

    Nice explanation bro👏

  • @rode_atharva
    @rode_atharva Před 4 měsíci +1

    while(true){
    print("great explenation")
    }

  • @lo_sten
    @lo_sten Před měsícem

    Could you also do a topdown approach please

  • @jayaveeran1
    @jayaveeran1 Před 2 měsíci

    This is no less than excellent !

  • @himanshuajwani9226
    @himanshuajwani9226 Před 2 měsíci

    amazing and detail explained

  • @EgorChebotarev
    @EgorChebotarev Před 3 měsíci +1

    nice explanation

  • @vishwasankar14
    @vishwasankar14 Před 6 měsíci

    Thank you so much brother!

  • @subee128
    @subee128 Před 7 měsíci +1

    Thanks

  • @anushakatika9229
    @anushakatika9229 Před 8 měsíci +1

    Thanks!

    • @nikoo28
      @nikoo28  Před 8 měsíci

      Thank you so much for the support.

  • @alisheheryar1770
    @alisheheryar1770 Před 2 měsíci

    No recursive brute force for this??????????????

  • @AmalGeorge-xt3kq
    @AmalGeorge-xt3kq Před 10 měsíci

    Sir, in this problem you are iterating from i=1, j=1. but, in the given example the memoization table has dp[0][1]=1. how does it got 1 in program

    • @nikoo28
      @nikoo28  Před 9 měsíci +1

      when you initialize a 2D array, all elements are initialized to 0 by default. That is why I run my loop from i=1, j=1

  • @shadowwolf5578
    @shadowwolf5578 Před rokem

    sir can you explain the backtracking part? To print longest common subsequence

    • @nikoo28
      @nikoo28  Před rokem

      i will make a video on it soon

  • @ifrahshahid8802
    @ifrahshahid8802 Před 14 dny

    best

  • @exe.m1dn1ght
    @exe.m1dn1ght Před rokem

    Hello Sir, can you make a good video about iteration and loops ? And I hope you will not give the example " You need to repeat 10 times hello, how would you do it ? " ..

    • @nikoo28
      @nikoo28  Před rokem +1

      What do you want to understand when it comes to loops. I can think on those lines.

    • @exe.m1dn1ght
      @exe.m1dn1ght Před rokem +1

      @@nikoo28 I dont even know what i'm trying to understand .. I solved 380 problems on LeetCode and still can't really understand them a hundred percent, I use for and while loops to solve problems by pure instinct .. It's like these loops are simulating real world but at a text level , for example if i want to drink a glass of water the translation to text is while ( i still have water in the glass) i keep doing the drinking logic and decrease the water in the glass, but then you have conditions like while (i still have the light on) i keep reading , but that condition is changing based on something decreasing or increasing because mathematics is present in everything right ? we can quantify everything if we really think about it no ? I'm trrying to create this clear picture in my mind comparing programming text and real life and real life to programming text .. Am i overthinking this or I am going crazy ? Please help Sir !

    • @RamuKumar-yl4yp
      @RamuKumar-yl4yp Před rokem

    • @ankurbassi2667
      @ankurbassi2667 Před rokem +1

      @@exe.m1dn1ght I never imagined a way of comparison like this. I think you should start making videos of how are you relating with real life. A different perspective which will be very cool to know

    • @exe.m1dn1ght
      @exe.m1dn1ght Před rokem

      @@ankurbassi2667 i had a very wrong perspective about this, i figured out its just instructions, like the ones you read on a cooking recipe. I am so happy i fixed my problem, it was all about how i see it. Anyway this dude didnt even helped me at all

  • @dmytro.pyvovarenko
    @dmytro.pyvovarenko Před 6 měsíci

    cudo!

  • @luiggymacias5735
    @luiggymacias5735 Před 6 měsíci

    sosote rocafuerte