Delete and Earn - Dynamic Programming - Leetcode 740 - Python

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

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

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

    Even though this is a "medium" in leetcode, this guy makes every coding problem seem like an easy one. Hey man, you've got such great teaching skills. Thank you for sharing your algo approaches here. This channel is definitely gold.

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

    I have a couple of coding interviews coming later this month. Not expecting much since I pretty much just started relearning a few weeks back but emulating and learning from your explanations and solutions helped me learn more in those couple of weeks than I have in months of bruteforcing LC back in college.

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

    Ty! np: sorted() converts the set of nums array to the list in Python; can skip list() function of line #4

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

    I implemented a sub-optimal solution using hashmap and set which worked for 50% of the testcases but when you said it is similar to house robber, a light-bulb went off in my head!! You're a real G!

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

    This is by far one of the best DP explanations, thanks so much!

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

    This is an exceptionally well taught lesson

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

      Thank you!

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

    did the recursive solution on my own but optimising this is tough

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

    another small improvement would be to consider i = 0 as a base case, i.e. fill out earn1 as 0 and earn2 as nums[0] * counts[nums[0]], then start iterating from i = 1

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

    sooo elegant - thank you!!

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

    Was this question inspired by someone on your discord?

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

      Yeah, I wanted to do it much sooner... but better late than never :)

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

    Hey I'm new to leetcode
    I recently found your channel
    I do solve easy problems by following your explanation
    But it seems I tend to forget the problem that I solved within a week
    How to retain the concepts that you teach in every video?

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

      Hi, I was facing the same problem beforehand. Any coding problem has 2 things: intuition and coding.
      You only have to remember the intuition. Once you are able to understand it, coding is no big deal !

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

      @@mrditkovich2339 hey thanks for the suggestion
      These days I started to write down those algorithms in my notebook then execute them in code
      Now I'm feeling far better

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

      @@roadtomillion9499 Glad to hear ! As an addition, please prefer quality over quantity. Most of the questions related to graph and DP follow a pattern.

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

      @@roadtomillion9499
      I also recommend following with the Spaced Repetition System in order to revisit what you have solved.

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

    wow..You gave a very good hint which made me solve the problem without watching the solution .. Anyways watched the solution after solving..Thank you very much for your efforts

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

    Brilliant explanation. Thanks for this.

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

      No problem 👍

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

    Sorting already takes O(n) space. So using an array does not affect space complexity

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

    If I get into faang, you deserve my first salary lol. such a quality explanation

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

      I'll atleast meet him and give me a hug.

  • @_rohit97
    @_rohit97 3 ปีที่แล้ว

    @ time stamp 12:48 you told you over complicated it up! Bruhh Nooo you did not! It was pristine!

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

    I'm surprised you're not sharing the time optimal solution, the O(n) version instead of the O(nlogn) one

    • @AshutoshKumar-es8xy
      @AshutoshKumar-es8xy 2 ปีที่แล้ว

      How nlogn

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

      @@AshutoshKumar-es8xy sorting was used

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

      Instead of commenting meaningless information, publish it

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

      A year passed and you haven’t provided the o(n) solution

    • @AkifIsmail-f9p
      @AkifIsmail-f9p 3 หลายเดือนก่อน

      so there is no O(n) solution I presume. Went through the solution board but there wasn't any

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

    why do we only need to look at the two previous values? couldn't values before then change depending on which current value we choose?

  • @yashgupta-fk3zc
    @yashgupta-fk3zc 3 ปีที่แล้ว +2

    in 5 min of a video i was able to code it my self

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

    Hey, Can you please also mention the Time and Space complexity of the final solution in your videos....Interviewers generally ask for it.
    Thanks.

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

      Hey, the time complexcity is nlogn because we are sorting and traversing through the array once and space is complexity is 2n one of dictionary and other for array but if we take big oh then it is n. Hope it helps.

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

    Amazing Explaination !

  • @11iqra
    @11iqra ปีที่แล้ว

    Amazing explanation!

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

    Mr NeetCode, how can we ever achieve your level of intuitive understanding of algorithms, dynamic programming, and the like? Where should we look?

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

    Dear Neetcode - why did you sort your array? And why did the DP function not include numbers greater than the selected value (like n+2, n+3, etc)

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

      So that we can track the n-1 numbers easily. Also at every index we maintain the max value.

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

    Thanks. More videos will be appreciated 🙂

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

    If we have [2,3,5] and we choose 5, won't we get 5 + 3 + 2 =10? from your method and leetcode would say is only 8.

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

    man, you are everywhere!!

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

    only if this dude coded in c++

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

    i really like ur explaining method but the thing is i and most beginner cp enthusiast code in c++ this creates a prblm for all of us if u can code in c++ that will be really helpfull for us thanks btw

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

    Leetcode weekly 402, almost similar question came (Q3)

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

    good explanation

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

    HI, i don't know if you are answering but i am not getting the idea of the start of the operations, like when we have earn1 = 0 and earn2 = 0, i am trying to imagine it as a dp list and apply it but lost

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

    Thanks !

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

    it seems unnecessary to make nums into a set -- if you are going to use a Counter() you get a set out of the keys anyway

  • @AbhishekS-cv3cr
    @AbhishekS-cv3cr ปีที่แล้ว

    damm
    that was such a good explanation

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

    Guys I find it very discouraging when I cannot figure out a DP problem. I want to be able to make base cases but some of the questions just have this weird trick.. Is it just me ?

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

    The fact You have to know that You need to sort it first and then eliminate duplicates is ludicrous. How on this earth is anyone supposed to come up with that? it's just guessing

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

      You don’t

  • @shrimpo6416
    @shrimpo6416 3 ปีที่แล้ว

    LLLLLLLOVE this explanation!!!!!!

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

    for(int i=2;i

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

      man!!! i wasted like 3-4 hours and the mistake was i didn't put == inside the if statement and it didn't even show an error.

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

      Can you please share your complete code? I am getting 47 where it should be 37

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

      @@bidishadas832 Here you go. It isn't concise tho because I was a noob back then.
      class Solution{
      public:
      int deleteAndEarn(vector& nums){
      if(nums.size()==1) return nums[0];
      if(nums.size()==2){
      sort(nums.begin(),nums.end());
      if(nums[0]+2>=nums[1]) return (nums[0]+nums[1]);
      else if(nums[0]==nums[1]) return 2*nums[0];
      else if(nums[0]+1==nums[1]) return nums[1];
      }
      map m;
      for(int i=0;i

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

    Once he draws a recursion tree i can write a recursive code

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

    Amazing

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

    I am Stupid

  • @amitupadhyay6511
    @amitupadhyay6511 3 ปีที่แล้ว

    sorting is the key lol

  • @jogendarmahto3048
    @jogendarmahto3048 3 ปีที่แล้ว

    🔥🔥🔥