Leetcode - Longest Continuous Subarray With Absolute Diff Less Than or Equal to Limit

Sdílet
Vložit
  • čas přidán 1. 05. 2020
  • dequeue:--www.cplusplus.com/reference/de...
    question :-leetcode.com/problems/longest...

Komentáře • 63

  • @aishwat
    @aishwat Před 4 lety +15

    5:16 you mean greater than one, anyway great explanation!

  • @alexnice2221
    @alexnice2221 Před 3 lety +4

    I love that min and max queue technique with the sliding window.
    Also that deque technique is also used when finding the max or min value in each subarray of size K in an array O(n) time

  • @alexnice2221
    @alexnice2221 Před 3 lety +6

    Amazing solution. I learned something new. Thank you Sir 😄
    I know "sliding window" plus a "Hash" and a " counter" can be used to find longest subarray with k distinct elements
    Now you taught me that sliding window plus "min" and "max" deque can be used to find longest window with absolute difference less than k

  • @kopparthisai2918
    @kopparthisai2918 Před 3 lety

    @Lead Coding Why are we incrementing s by only 1 at everystep. Other sliding window problems we tend to squeez the sliding window by continiously increamenting s by 1.

  • @hyeonwoopark428
    @hyeonwoopark428 Před rokem

    OMG You are the best! I love learning this technique!

  • @studyaccount794
    @studyaccount794 Před 2 lety

    Great explanation. This is one of the harder monotonic stack/deque problems in my opinion.

  • @AnshMehtaGR8
    @AnshMehtaGR8 Před 4 lety +2

    Why time complexity of deletion considered to be O(1) for deleting multiple elements from the deques. What if there are N elements to removed from the deque?

    • @mohammadfraz
      @mohammadfraz  Před 4 lety +1

      Actually at most n elements will be inserted or removed in total. So it would be O(N)

  • @xesfa
    @xesfa Před rokem

    such an amazing explaination, thank you!

  • @haidisaid6689
    @haidisaid6689 Před 3 lety

    how to do this task using dynamic programming?

  • @yashgupta-fk3zc
    @yashgupta-fk3zc Před 2 lety

    bhaiya what if we use stack for min and max element

  • @DiaryOfMuhib
    @DiaryOfMuhib Před 4 lety +1

    Awesome explanation. Make more videos like this

  • @ShwetaSingh-yp4ok
    @ShwetaSingh-yp4ok Před 4 lety

    thanks for the solution. really good explanation.

  • @sumitbisht4161
    @sumitbisht4161 Před 2 lety

    Clear and concise explanation 👍🏻

  • @MustafaKhan-qk9ls
    @MustafaKhan-qk9ls Před rokem

    What if we wanna get non continuous subarray with difference less than equal to limit???

  • @dailymemes2512
    @dailymemes2512 Před 3 lety +1

    Can we use set we insert into set begin () will give smallest and end()-1 will give maximum

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

    What will your algorithm output for this input [10, 1, 2, 1, 7, 2] for k=5
    It will be 4 , which is wrong.

  • @abhaytiwari1615
    @abhaytiwari1615 Před 4 lety

    Can you please tell me how you got the hint that we have to use *deque* data structure here? Please reply asap...i have my placement test next week.

    • @mohammadfraz
      @mohammadfraz  Před 4 lety +1

      It's based on practice. You can refer to the microsoft playlist and practice questions from there, for placements

    • @abhaytiwari1615
      @abhaytiwari1615 Před 4 lety

      @@mohammadfraz okay. Thanks for the reply 👍

  • @code7434
    @code7434 Před 4 lety +1

    issue is we need index corresponding to minimum and maximum , m i right? so why not just use a pair , actually i dont want to use deque

    • @yuganderkrishansingh3733
      @yuganderkrishansingh3733 Před 3 lety +1

      think duplicates. How do u even know what is the new minimum/maximum is once the window changes? If there are multiple instances of these then it will be quite inefficient if u r iterating through the whole window to check again and again that what's the new min or max. Better to store them in some DS which is optimal.

  • @bizdep6237
    @bizdep6237 Před 2 lety +1

    Why can't we use min and max function to calculate min of (start and end) and max of (start and end). I am trying to understand why we need dequeue and i also know this is the right approach as my way isn't giving the right output. Here is my python code, from your algorithm, it looks like max and min changes depending on whatever the max and min value of start and end variable is
    maxim,minim = nums[0],nums[0]
    maxlen = 0
    start,end = 0,0
    while end < len(nums):
    maxim = max(nums[start],nums[end])
    minim = min(nums[start],nums[end])
    if (maxim-minim) > limit:
    start += 1
    else:
    end +=1
    maxlen = end-start+1
    return maxlen

  • @aleyummusic
    @aleyummusic Před 4 lety +1

    Why do remove all elements at 5:49?

    • @fluffy_raptor
      @fluffy_raptor Před 3 lety

      Finally have the answer. This took me forever to understand as no one ever explained it.
      input:
      [74,42,85,81,55]
      limit:
      4
      variables at every step
      left pointer | minheap | maxheap| right pointer
      0 [74] [-74] 0
      0 [42, 74] [-74, -42] 1
      1 [42, 74] [-42] 1
      1 [42, 74, 85] [-85, -42] 2
      2 [74, 85] [-85, -42] 2
      3 [74, 85] [-42] 2
      3 [74, 85, 81] [-81, -42] 3
      4 [74, 85, 81] [-42] 3
      4 [55, 74, 81, 85] [-55, -42] 4
      [55, 74, 81, 85] [-55, -42]
      our answer: 1
      correct answer: 2
      If you look at line seven in the 'variables at every step' portion you will see if we don't delete the excess numbers we will sometimes compare the wrong numbers. We should be comparing 85-81 (which is less then four) as 74 was made redundant when we added 42 to the min heap as 42 is smaller and came after 74.
      compare that to what should be printed at every step
      left pointer | minheap | maxheap| right pointer
      0 [74] [74] 0
      0 [42] [74, 42] 1
      1 [42] [42] 1
      1 [42, 85] [85] 2
      2 [85] [85] 2
      2 [81] [85, 81] 3
      2 [55] [85, 81, 55] 4
      3 [55] [81, 55] 4
      4 [55] [55] 4
      You can now see at line seven we are comparing 81 to 85 which is 4 which is equal to or less then our limit so the answer would be 2, the correct answer, instead of our original 1. Again the issue was because we still had redundant numbers such as 74 in our heaps that should of been removed.

  • @code7434
    @code7434 Před 4 lety +1

    so sliding window kind of approach basically

  • @lifehacks9450
    @lifehacks9450 Před 4 lety

    Amazing work sir

  • @nguyendangkhoa621
    @nguyendangkhoa621 Před 10 měsíci

    thanks sir, u helped me a lot

  • @yashthakkar4499
    @yashthakkar4499 Před 4 lety

    excellent video keep it up

  • @sourabhkhandelwal689
    @sourabhkhandelwal689 Před 4 lety

    Aren't what you are using called MonoQueues(Monotonic Queues)?

  • @aleyummusic
    @aleyummusic Před 4 lety

    What program are you using to draw?

  • @yuganderkrishansingh3733

    Hye bro. Good video. Enjoyed it. Pls keep making more such videos.

  • @aryan__o
    @aryan__o Před rokem

    Thank you Sir 😘

  • @akhilkumaramarneni8153

    in the first explanation, if we take input [4,8,5,1,7,9] ur output is 6 but excepted is 3. u r comparing only with min and max elements.

  • @alexgillespie1098
    @alexgillespie1098 Před 2 lety

    This should be a leetcode hard especially considering "Sliding Window Maximum" is a hard, and this problem is much more difficult than that one

  • @vinoddiwan5792
    @vinoddiwan5792 Před 4 lety

    Which software you are using to write on black screen.

  • @willturner3440
    @willturner3440 Před 3 lety

    Can also use sliding window

  • @Siddharthpratapsingh
    @Siddharthpratapsingh Před 4 lety +3

    No logical flow of thought process. Deques just pop up out of nowhere. Where is the recurrence relation?

    • @2lazydba
      @2lazydba Před 4 lety +8

      Thats cos u havent practiced enuf and want everything spoon fed tat too for free

  • @testbot6899
    @testbot6899 Před rokem

    This question was asked in Facebook screening round

  • @Nani-rp5dr
    @Nani-rp5dr Před 3 lety

    Super sir🔥

  • @frogger832
    @frogger832 Před 3 lety

    The two deques are so simple yet the concept is hard to understand.

    • @alexnice2221
      @alexnice2221 Před 3 lety +1

      Its an incredibly powerful technique because many interviews have difficult array problems that need to be solved in 0(n) time.
      Please check the question "find the max or min value in each subarray of size K n an array, in O(n)"
      It would be mind boggling when you get the solution

  • @sachinsain3884
    @sachinsain3884 Před 2 lety

    it was asked in uber dsa round

  • @snowwhite4457
    @snowwhite4457 Před 3 lety +1

    my horses name is boris

  • @wuschelbeutel
    @wuschelbeutel Před 3 lety +1

    Good video. Side comment: Deque is pronounced just like "deck."

  • @code7434
    @code7434 Před 4 lety

    :)

  • @shreya-rs1fr
    @shreya-rs1fr Před 3 lety

    e++ should be at the end.
    }
    else{
    ans = max(ans, (e-s+1));
    }
    e++;

  • @pvchio
    @pvchio Před 4 lety

    we can actually use two variables for min and max

    • @mohammadfraz
      @mohammadfraz  Před 4 lety

      Can you tell how ?.

    • @pvchio
      @pvchio Před 4 lety +1

      @@mohammadfraz
      in JS
      var longestSubarray = function(nums, limit) {
      let size = 0;
      for (let i = 0; i < nums.length; i++) {
      let min = nums[i];
      let max = nums[i];
      for (let j = i; j < nums.length; j++) {
      min = Math.min(min, nums[j]);
      max = Math.max(max, nums[j]);
      if (Math.abs(min - max)

    • @mohammadfraz
      @mohammadfraz  Před 4 lety +4

      @@pvchio this will not pass the constraints as this is O(N^2)

    • @sourabhverma0
      @sourabhverma0 Před 4 lety

      @@mohammadfraz hey thanks for this, I now know there's something like dequeus. I did find a solution with dequeues too which got accepted. github.com/black-shadows/InterviewBit-Topicwise-Solutions/blob/master/Codersbit/Longest%20Subarray%20Difference.cpp