String Compression II - Leetcode 1531 - Python

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

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

  • @MP-ny3ep
    @MP-ny3ep 11 месяцев назад +15

    They saved the best for the last😂. Thank you for explaining so well, it was a really tough problem.

  • @Sinders
    @Sinders 11 месяцев назад +11

    changing one of the base cases from i == len(s) to len(s) - i == k helped my runtime dramatically

    • @khushmeetchugh8669
      @khushmeetchugh8669 11 месяцев назад

      it removed my TLE bro thanks

    • @gmasid
      @gmasid 11 месяцев назад

      Thanks bro, this help TLE too!

    • @raghavbhatia5548
      @raghavbhatia5548 11 месяцев назад

      @@khushmeetchugh8669 C++ magic

    • @yang5843
      @yang5843 11 месяцев назад

      This removed my TLE for Java, thank you

    • @karanshah2283
      @karanshah2283 11 месяцев назад +1

      can you please explain the logic behind this base case change?

  • @s20061002
    @s20061002 11 месяцев назад +1

    Well explanation that saved my life!!!
    I am able to apply what you have taught in the video and solve today's leetcode question. This is encouraging for me !!!

  • @bhavikransubhe7244
    @bhavikransubhe7244 11 месяцев назад +6

    Today's daily leetcode challenge was difficult.
    Need to look for video 😂

  • @Drdarker
    @Drdarker 11 месяцев назад +3

    questions like this is almost impossible to solve in a real interview

  • @SiddharthReddy16
    @SiddharthReddy16 11 месяцев назад

    No way you actually make difficult problems with such clarity! I visit this channel every day, no matter how easy/hard the daily question is just to see your approach.

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

    This is a very difficult question. Thank you for making this video. It makes a little bit more sense now. lol

  • @MayankUpadhyaya-y2q
    @MayankUpadhyaya-y2q 11 месяцев назад

    Thank you for explaining the solution. you are really brilliant and extraordinary.

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

    If I get this on an interview. I'm just going to walk out

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

    best explanation for this question. I was so traumatized until seeing this. Thanks for sharing

  • @muhammadsodiqtoirov3204
    @muhammadsodiqtoirov3204 11 месяцев назад

    Thanks bro ! Good explanation Even gpt couldn't solve this problem ...

  • @ujjwalmaheshwari2327
    @ujjwalmaheshwari2327 11 месяцев назад

    class Solution {
    mapdp;
    int solve(string &s, int k, int i, char prev, int prevCnt){
    if(k

    • @v-free
      @v-free 11 месяцев назад

      It may be because you are using map, which is ordered and slow. Use unordered_map instead. You need to define a hash function since you are using a vector as key.
      struct vector_hash {
      size_t operator()(const vector& v) const {
      hash hasher;
      size_t seed = 0;
      for (int i : v) {
      seed ^= hasher(i) + 0x9e3779b9 + (seed2);
      }
      return seed;
      }
      };
      unordered_map dp;

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

      @@v-free hey can u tell how i can learn to make custom comparator and custom hashfunction i have tried it from some of the internet tutorials (mostly written ones) please lmk know if u have some resource or tips for me to help me learn those
      thank u

  • @chaunceyzhang6595
    @chaunceyzhang6595 11 месяцев назад

    Thanks for your persistence do this video series!

  • @chiragsrivastava4217
    @chiragsrivastava4217 11 месяцев назад

    class Solution:
    def getLengthOfOptimalCompression(self, s: str, k: int) -> int:
    @cache
    def dfs(i, k, prev, prev_count):
    if k

  • @pradyumnasingh9555
    @pradyumnasingh9555 11 месяцев назад

    thank you for such an easy explanation :)

  • @tranquoctoan1996
    @tranquoctoan1996 11 месяцев назад

    Thank you, it saved me

  • @krateskim4169
    @krateskim4169 11 месяцев назад

    Thank you so much

  • @aryakadam7892
    @aryakadam7892 11 месяцев назад

    thank you

  • @GuruPrasadShukla
    @GuruPrasadShukla 11 месяцев назад

    great explaination man!
    keep going bro!

  • @w702897028970289
    @w702897028970289 11 месяцев назад

    What an explanation...

  • @chien-yucode992
    @chien-yucode992 11 месяцев назад

    So amazing

  • @shubhamraj25
    @shubhamraj25 11 месяцев назад +3

    The same solution in Python beat 79% of users for me

  • @susmitsingh1775
    @susmitsingh1775 11 месяцев назад +1

    man fuck this problem, took me a bloody day to solve

  • @ronniey4231
    @ronniey4231 11 месяцев назад

    Can’t love your videos more😂

  • @ngneerin
    @ngneerin 11 месяцев назад +5

    I see hard and I quit
    I see medium and I watch
    I see easy and I solve

  • @caothanhluan1813
    @caothanhluan1813 11 месяцев назад

    God tier explanation but TypeScript compiler says it TLE when using Map()😂😂😂

  • @racoon-thespy7062
    @racoon-thespy7062 11 месяцев назад

    bruhh, in the morning doing the problem, guy has already got the solution ready, hats off

  • @aybarskeremtaskan
    @aybarskeremtaskan 10 месяцев назад

    Shouldn't we also consider the case of deleting s[i] when it is the same as the prev character?
    Like if we have the string "aaaaaaaaaaaaaaaaaaaaaaaaa..." (25 times a) and the k is 20, then we need to delete so that it is not a25, but a5 instead.

  • @shashankjoshi8250
    @shashankjoshi8250 11 месяцев назад +1

    Heyy Bro, your solution and way of explanation was amazing but still I am trying to understand this and how can I come up with this level of intuition to solve the problem. I was able to come up until greedy approach and got 74 passed.

  • @gnaneswarganta9920
    @gnaneswarganta9920 11 месяцев назад +1

    like what if we condensed the string first and later doing the computations

  • @Caramel-r9w
    @Caramel-r9w 11 месяцев назад +1

    How to do the opposite?

  • @sauravsingh4497
    @sauravsingh4497 11 месяцев назад

    Off topic but the discord link in the description Is not working (i wanted to join the server)

  • @shreyashpandey9351
    @shreyashpandey9351 11 месяцев назад

    How will I be able to develop intuition like that?

  • @BTCSEDarshan
    @BTCSEDarshan 11 месяцев назад

    Saviour !

  • @sidsudhir8231
    @sidsudhir8231 11 месяцев назад +1

    clutchhh

  • @mindrust203
    @mindrust203 11 месяцев назад +2

    Couldn't we just get the encoded string first and try to shrink it with a recursive function? Or will the addition of computing the encoded string give a TLE?
    EDIT: Nevermind this won't work, I thought run-length encoding would transform a string like "aabbaa" into "a4b2", but the encoding is actually "a2b2a2".
    If k = 2 in this case, the minimum length string would be "a4" with length 2. Indeed a hard problem.

    • @0ManPiano0
      @0ManPiano0 11 месяцев назад

      Lol I was so happy in the beginning thought “oh! That’s not HRAD!”
      Codes up this exact solution in like 10 min then also ran into this test case.
      Banged my head for the rest 30 min then gave up, lol.
      But after watching this solution does make me believe the condensed list will still work if we keep track of the previous character, which I did not implement this resulting in the failed case you gave.

  • @shreehari2589
    @shreehari2589 11 месяцев назад

    How the heck will I come up with this solution on spot in an interview, these problems are real tough

  • @thangavn8875
    @thangavn8875 11 месяцев назад

    phenomenal work, you gained a sub and a follower 💯

  • @binitrajshah9354
    @binitrajshah9354 11 месяцев назад

    didn't understand why it fail in greedy approach here?
    even when we consider our string as s = ''aaaaaaaaabaaaaaaaaac' and k = 2
    s compressed = a9ba9c
    so deleting minimum window freq element here ''b' & 'c'
    implie "a18" with lenght 3.
    can someone explain this?

  • @RajGupta-cu9hi
    @RajGupta-cu9hi 11 месяцев назад

    How to convert it to 2-dp because some solve it in....?

  • @ish90917
    @ish90917 11 месяцев назад

    do we add cache evetime in question of DP or backtracking ? If not when do we add them ?

    • @suhaanbhandary4009
      @suhaanbhandary4009 11 месяцев назад +1

      We add cache when we know that for a given set of input the output is same and their should also be overlapping sub-problems. In backtracking cache is of no use as mostly the sub problems are independent and doesn't occur more than once eg: Sudoku, but in DP same sub-problems occur eg: Fibonacci(try to draw tree of recursive call to better visualize).

    • @pritz9
      @pritz9 11 месяцев назад

      To memoize the recursive solution, otherwise you are gonna get a TLE.

  • @il5083
    @il5083 11 месяцев назад

    Is using func_tools cache to save sometime a bad idea in an interview? (for memoization)

    • @RolopIsHere
      @RolopIsHere 14 дней назад

      I was allowed to use it, as long as you explain how it works...

  • @SantoshKumar-bu2qr
    @SantoshKumar-bu2qr 10 месяцев назад

    Why does he sounds like Bane (Batman) giving savage dialouges?

  • @shrn
    @shrn 11 месяцев назад

    Same solution
    Runtime 1552 ms
    Beats 91.00% of users with Python3
    Memory 39.88 MB
    Beats 40.00% of users with Python3
    No !dea why leetcode does this sometimes

  • @w702897028970289
    @w702897028970289 11 месяцев назад

    I wrote it in Java version but 122/144 got TLE... Why

  • @stat_life
    @stat_life 11 месяцев назад

    This solution had beaten 100% of users in runtime and memory, LEETCODE is broken

  • @abhisheksuman4510
    @abhisheksuman4510 11 месяцев назад

    This aproach is giving runtime error due to stack overflow.

  • @tanishq8211
    @tanishq8211 11 месяцев назад

    I dont understand why he did ... note updated the deleted character? can somebody explain?

    • @0ManPiano0
      @0ManPiano0 11 месяцев назад

      Don’t understand your question

  • @shawn_yg1394
    @shawn_yg1394 11 месяцев назад

    The example2 is indicating that minheap does not work but I still waste time for that...

    • @shashankjoshi8250
      @shashankjoshi8250 11 месяцев назад

      Nah. it will work for example 2. I tried it.. greedy passes 74 tc.

  • @anonymousperson4466
    @anonymousperson4466 11 месяцев назад

    why is it so hard.....goddamn

    • @0ManPiano0
      @0ManPiano0 11 месяцев назад

      This one is hard, isn’t it.

    • @anonymousperson4466
      @anonymousperson4466 11 месяцев назад

      @@0ManPiano0 I'm having a hard problem everyday...at least one.....this one's painfully hard for me

  • @ajaybabua9735
    @ajaybabua9735 11 месяцев назад

    Can someone please explain me about the increment part 14:04 to 16:00?

    • @w702897028970289
      @w702897028970289 11 месяцев назад +3

      Because when we encounter
      1 -> 2 (a -> a2)
      9 -> 10(a9 -> a10)
      99 -> 100(a99 -> a100)
      all of these cases will result in answer to be plus by 1
      and the rest of the case don't need to do this because the length remain the same like
      3 -> 4(a3 ->a4)

    • @aswinnath8580
      @aswinnath8580 11 месяцев назад

      your explanation helped me to understand that part.@@w702897028970289

  • @CheeseStickzZ
    @CheeseStickzZ 11 месяцев назад

    I mean this is cute and everything, but what the hell is the use of solving these. They have no practical application whatsoever 😂 AKA utter waste of time