Minimum Difference Between Largest and Smallest Value in Three Moves - Leetcode 1509 - Python

Поділитися
Вставка
  • Опубліковано 16 лип 2024
  • 🚀 neetcode.io/ - A better way to prepare for Coding Interviews
    🧑‍💼 LinkedIn: / navdeep-singh-3aaa14161
    🐦 Twitter: / neetcode1
    ⭐ BLIND-75 PLAYLIST: • Two Sum - Leetcode 1 -...
    Problem Link: leetcode.com/problems/minimum...
    0:00 - Read the problem
    0:30 - Drawing Explanation 1
    5:39 - Coding Explanation 1
    8:11 - Drawing Explanation 2
    12:26 - Coding Explanation 2
    leetcode 1509
    #neetcode #leetcode #python
  • Наука та технологія

КОМЕНТАРІ • 55

  • @utkarshdewan8736
    @utkarshdewan8736 13 днів тому +6

    That was so bloody clever. I just learnt heap a week ago and did not even think that we can use a heap here

  • @aashishbathe
    @aashishbathe 14 днів тому +2

    Awesome man. Learnt something new today. Nsmallest and nlargest. Thank you!

  • @MP-ny3ep
    @MP-ny3ep 13 днів тому

    Great explanation as always. Thank you

  • @kareni7572
    @kareni7572 13 днів тому

    Thanks for showing us previous attempts!
    Good explanation & 2nd solution was interesting...

  • @puneettripathi8418
    @puneettripathi8418 13 днів тому +1

    doesn't heapifying an array of size n, itself is a process of O(n*log(n)), you perform sink and swim operations that both take O(log(n)) for n elements?

  • @woodylucas
    @woodylucas 13 днів тому +9

    Python is such a cheatcode it is ridiculous, and it isn't even fair 🤕

  • @CuriousAnonDev
    @CuriousAnonDev 13 днів тому +6

    na bro i am so done
    i cant fucking solve these questions no matter how much i try shit

    • @tirasjeffrey2002
      @tirasjeffrey2002 13 днів тому +2

      one day at a time man, no shame in accepting u cant come up with the solution, how else do we increase our knowledge

    • @joaopedrocastro4486
      @joaopedrocastro4486 13 днів тому

      its okay bro, just have pacience and try to solve it, if you cant just look a solution and try to solve it another day!

  • @chien-yuyeh9386
    @chien-yuyeh9386 13 днів тому

    Nice🎉🎉

  • @HuyLe-zx8ko
    @HuyLe-zx8ko 13 днів тому

    brilliant

  • @MykolaPavluchynskyi
    @MykolaPavluchynskyi 13 днів тому

    Interesting that if you try to do in java with heaps - it will be more than twice slower. Because with sorting it can be done on int[], without using a collections with all their overhead

    • @MykolaPavluchynskyi
      @MykolaPavluchynskyi 13 днів тому

      Sorry, it's not actually true, it was because of not optimal updates in heaps, but always adding and removing extra. With extra checks for avoiding non efficient poll/offer - it is actually faster

  • @Anthony-oz1jc
    @Anthony-oz1jc 13 днів тому

    similar idea :
    class Solution {
    public:
    int minDifference(vector& nums) {
    int n=nums.size();
    if(n

  • @adityabhatt4177
    @adityabhatt4177 13 днів тому

    the video and the explaination is awsome..but could you try to code in java or c++

  • @LasTCursE69
    @LasTCursE69 12 днів тому

    "Solution to the most hardest part of this problem is simple, just use a built-in python library"
    Amazing explanation 👏 -.-

  • @RuslanZinovyev
    @RuslanZinovyev 13 днів тому

    Logically, the solution was obvious but it would take me a lot of time to come up with this: int right = nums.length - 4 + left;
    btw is it really necessary to sort Heaps? It is supposed to be in the right order out of the box.

  • @kennycarneal3577
    @kennycarneal3577 12 днів тому

    Just wanted to say I love you bro you're awesome

  • @tirasjeffrey2002
    @tirasjeffrey2002 13 днів тому +2

    by remove, he means setting it to the min value right? coz you cant actually remove, you can only change it to any val

    • @HuyLe-zx8ko
      @HuyLe-zx8ko 13 днів тому +1

      he means we don't need to care about those

    • @dss963
      @dss963 13 днів тому +1

      When the lower one incremented to next high or higher element to next lower , there is no point of considering it as we care about diff b/w high and low

  • @tarekradwan8661
    @tarekradwan8661 9 днів тому

    The question is not removing could you pleaSe fix that. I know it is still the same but just confuses

  • @business_central
    @business_central 13 днів тому +1

    can someone clarify further why the sorted in the heaps solutions? doesn't adding the sorting will end us at nlogn ?

    • @mayursmahajan
      @mayursmahajan 13 днів тому

      It would have been nlogn if we sorted nums. We are not sorting nums but sorting a sub arr of size 4 that we got from the heap. Thus their sorting will be considered as Constant time

    • @business_central
      @business_central 13 днів тому

      @@mayursmahajan Thank you very much! Now I get it! Thanks!

    • @notcountdankula
      @notcountdankula 9 днів тому

      ​@@mayursmahajanbut we are heapifying the entire array. So it will take nlogn anyways

  • @shnorlaxzz395
    @shnorlaxzz395 13 днів тому

    I think the question should be more clear and provide more details

  • @olegleonov1310
    @olegleonov1310 13 днів тому

    Why not just?
    fun minDifference(nums: IntArray): Int {
    if(nums.size

  • @pastori2672
    @pastori2672 13 днів тому +1

    multiple choice problem detected brute force selected 🗿

  • @roderickli6505
    @roderickli6505 13 днів тому

    is heap actually a N operation? i feel like its not and when i view the time complexity on leetcode its n lgn

  • @edmonddantes587
    @edmonddantes587 12 днів тому

    difficult to come up with the intuition here.

  • @antondonohue8943
    @antondonohue8943 14 днів тому +2

    oh first haha. I appreciate you Neet

  • @MrSpeedFrk
    @MrSpeedFrk 13 днів тому +12

    I guess I'm the only one that found this explanation confusing sigh

  • @MWKING
    @MWKING 13 днів тому

    The video is speeded-up by default

  • @tirasjeffrey2002
    @tirasjeffrey2002 13 днів тому

    if you think neet's way of using hardcoded numbers is hard to wrap your mind around, try this:
    n = len(nums)
    i = 0
    j = 3
    if len(nums) i will go from 0 to 3, j will go from 3 to 0
    -> i will be the left pointer, ie number of values cut off from the left
    -> j will be the right pointer, ie number of values cut off from the right
    -> thru this, we can get 4 combinations of removals:
    => 0 values from left, 3 values from right
    => 1 value from left, 2 from right
    => 2 from left, 1 from right
    => 3 from left, 0 from right
    return the min among these calculations
    hope this helps those who couldnt grasp neet's explanation
    peace, x
    edit: i had no clue heap could be used here im dumb asf

  • @bundiderp5109
    @bundiderp5109 13 днів тому +3

    It's a bit unfortunate that you jumped right in with the intention to REMOVE elements. The description says "change to any value". The observation that this is effectively the same as removing was not made in the video, but beforehand.

  • @shwethaks7994
    @shwethaks7994 12 днів тому

    @NeetCodeIO can you make a video on giving tips regarding job search and some websites where we can apply. I think this would be very helpful to many people like me in the middle of a job hunt.

  • @pranithtirumalsetti1453
    @pranithtirumalsetti1453 14 днів тому

    I am waiting for you from 1 hour

  • @dheereshagrwal
    @dheereshagrwal 13 днів тому +5

    *no need to sort bud*
    min_four = nsmallest(4, nums)
    max_four = nlargest(4, nums)
    res = float("inf")
    for i in range(4):
    res = min(res, max_four[4 - i - 1] - min_four[i])
    return res

  • @akialter
    @akialter 14 днів тому

    Man coding in a language that doesn't have min or max heap is tricky, probably just sort the array and call it a day
    Edit: can implement quickselect which average O(n), and a good segway to LC 215 kth largest element in array

  • @bhavyajainnd
    @bhavyajainnd 13 днів тому

    What's the Java equivalent fo heapq.nsmallest and largest?

    • @akshatsingh6036
      @akshatsingh6036 13 днів тому +1

      implement it yourself LOL

    • @f840810
      @f840810 13 днів тому

      You really need to use priority queue to implement that equivalent function. Yet, you can use two arrays and some element comparisons to determine the biggest and smallest 4 elements

    • @RuslanZinovyev
      @RuslanZinovyev 13 днів тому

      For minHeap it should be something like this: Queue minHeap = new PriorityQueue(Comparator.naturalOrder());
      For maxHeap: Queue maxHeap = new PriorityQueue(Comparator.reverseOrder());