L11. Subarray with k different integers | 2 Pointers and Sliding Window Playlist

แชร์
ฝัง
  • เผยแพร่เมื่อ 20 ต.ค. 2024

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

  • @takeUforward
    @takeUforward  6 หลายเดือนก่อน +139

    There is a slight mistake in the code. Please find the fix below
    while (mpp.size() > k) {
    mpp[nums[l]]--;
    if (mpp[nums[l]] == 0)
    mpp.erase(nums[l]);
    l++;
    }
    The while condition and the value of L

    • @ManishKumar-dk8hl
      @ManishKumar-dk8hl 6 หลายเดือนก่อน +1

      👍

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

    • @karthik-varma-1579
      @karthik-varma-1579 22 วันที่ผ่านมา +1

      Java Code
      class Solution {
      public int subarraysWithKDistinct(int[] nums, int k) {
      return subArraysLessThanEqualToK(nums,k)-subArraysLessThanEqualToK(nums,k-1);
      }
      public int subArraysLessThanEqualToK(int[] nums,int k){
      int l=0,r=0,count=0;
      HashMap hm = new HashMap();
      while(r k){
      int rm = nums[l];
      hm.put(rm,hm.get(rm)-1);
      if(hm.get(rm) == 0){
      hm.remove(rm);
      }
      l++;
      }
      count += (r-l);
      r++;
      }
      return count;
      }
      }

  • @rohitn8883
    @rohitn8883 6 หลายเดือนก่อน +112

    Hey Striver,
    I think there are two corrections needed to be done
    the while condition should be while (mp.size() > k)
    and instead of l-1, it should be incremented to l+1

  • @yogeshinba6809
    @yogeshinba6809 6 หลายเดือนก่อน +31

    Solved this on my own using learnings from previous lectures, thanks striver :)

    • @tarunyadav6617
      @tarunyadav6617 2 หลายเดือนก่อน +1

      fr , just using

  • @AdityaSingh-uy8ms
    @AdityaSingh-uy8ms 6 หลายเดือนก่อน

    The explanation of the problem and its solutions from basic to optimized solutions... everything is crystal clear ... truely helpful ... thanks

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

    Bro u r goated, I was able to solve the problem without looking at the solution thanks to you covering all patterns in the previous problems. Your last few vids helped me in understanding pattern 2 and 3 perfectly.

  • @soumyajit_0
    @soumyajit_0 6 หลายเดือนก่อน +16

    3 Corrections.
    1) The inner while condition should be while(mp.size>k)
    2) The l=l-1 should be l=l+1 in the inner loop.

    • @Dsa_kabaap
      @Dsa_kabaap 5 หลายเดือนก่อน +13

      1 correction.
      1). U mentioned 3 but listed 2

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

      @@Dsa_kabaap

  • @trailblazer555
    @trailblazer555 6 หลายเดือนก่อน +15

    Today's Leetcode Problem of the Day!!!

  • @data-fi4hl
    @data-fi4hl 2 หลายเดือนก่อน +2

    did this question on my own by learning from previous lecture!! thanks striver bhaiya

  • @AdityaMaurya-dw3od
    @AdityaMaurya-dw3od 2 หลายเดือนก่อน

    Did this question on my own! Feeling so good. The previous lectures helped me

  • @HimanshuYadav-fg8sm
    @HimanshuYadav-fg8sm 6 หลายเดือนก่อน +8

    Sir There are 2 mistakes thre should be if(map.size()>k)
    and l++ in the place of l=l-1.

  • @stith_pragya
    @stith_pragya 5 หลายเดือนก่อน +1

    Understood.............Thank You So Much for this wonderful video...........🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻

  • @stith_pragya
    @stith_pragya 5 หลายเดือนก่อน +1

    Understood.....Thank You So Much for this wonderful video..........🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻🙏🏻

  • @RoshanPathak-i4l
    @RoshanPathak-i4l 2 หลายเดือนก่อน

    Hi Striver, I think few corrections required, but I think you have already addressed it, adding in the java reference code, but bro you are awesome.
    class Solution {
    public int subarraysWithKDistinct(int[] nums, int k) {
    return countSubArraysWithGoal(nums, k) - countSubArraysWithGoal(nums, k-1);
    }
    private int countSubArraysWithGoal(int[] nums, int goal){
    if(goal

  • @AbhishekKumar-vu3cp
    @AbhishekKumar-vu3cp วันที่ผ่านมา

    i solved this on my own Thanks Striver

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

    Thankyou so much Striver for all you efforts throughout in delivering us so much valuable content. Any student / working professional can now be able to transition their career without paying money for courses.
    Would also like your insights on the point :
    While preparing for interviews most of the aspirants are going through the videos solely and solving the question after completely watching the video. And also are feeling lazy trying to solve the question on our own. What is the best way to complete any topic without being lazy and how should an aspirant approach any topic/playlist?

  • @hareshnayak7302
    @hareshnayak7302 5 หลายเดือนก่อน

    Undeerstood,Thanks Striver for this amazing video.

  • @Krishna-ti8ys
    @Krishna-ti8ys 6 หลายเดือนก่อน

    Thank you so much bhaiya. I learned a lot from you. Please make a playlist on greedy as well if possible.

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

    Solved on my own thanks to you!

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

    Understood. Completed full playlist.

  • @wilhelmrudolphfittig3577
    @wilhelmrudolphfittig3577 4 หลายเดือนก่อน +1

    understood !
    L9,L10,L11 are the same.

  • @rushidesai2836
    @rushidesai2836 2 หลายเดือนก่อน

    This is a gold question

  • @117_mainakpaul2
    @117_mainakpaul2 21 วันที่ผ่านมา

    Can we use hashset instead of hashmap ??

  • @siddharthsharma7938
    @siddharthsharma7938 2 วันที่ผ่านมา

    solved it on my own!

  • @techmatein
    @techmatein 2 หลายเดือนก่อน

    solved hard question on my own by applying the previous questions logic

  • @RajanKumar-vf7op
    @RajanKumar-vf7op 6 หลายเดือนก่อน +12

    class Solution {
    public:
    int helper(vector& nums, int k) {
    int left = 0, right = 0;
    map map;
    int cnt = 0;
    while(right < nums.size()) {
    map[nums[right]]++;
    while(map.size() > k) {
    map[nums[left]]--;
    if(map[nums[left]] == 0)
    map.erase(nums[left]);
    left++;
    }

    cnt += right - left + 1;
    right++;
    }
    return cnt;
    }

    int subarraysWithKDistinct(vector& nums, int k) {
    return helper(nums, k) - helper(nums, k - 1);
    }
    };

  • @N1903-q9t
    @N1903-q9t 5 หลายเดือนก่อน

    striver can you please do problems on in how many ways an array can be splitted based on the given condition

  • @codeman3828
    @codeman3828 6 หลายเดือนก่อน

    Was able to solve by myself. Thanks

  • @VinayQ-
    @VinayQ- 26 วันที่ผ่านมา

    I think the code sippet liitle bit wrong
    while(mpp.size() > k){
    l=l+1
    }

  • @oyeesharme
    @oyeesharme 2 หลายเดือนก่อน

    thanks bhaiya

  • @vinaykumarratnala5832
    @vinaykumarratnala5832 2 หลายเดือนก่อน

    Solved before watching the video

  • @abhisheksinghdangi5027
    @abhisheksinghdangi5027 6 หลายเดือนก่อน +9

    Todays lc potd

    • @Mohit_Q
      @Mohit_Q 6 หลายเดือนก่อน +1

      wowwww mazeeee

    • @priyanshkumar17
      @priyanshkumar17 6 หลายเดือนก่อน

      yeah!!!

    • @yashgaikwad6256
      @yashgaikwad6256 6 หลายเดือนก่อน

      yahh!

  • @anantsaxena5454
    @anantsaxena5454 4 หลายเดือนก่อน +1

    Solved

  • @shreyxnsh.14
    @shreyxnsh.14 3 วันที่ผ่านมา

    super easy if you have watched the previous videos:
    class Solution {
    public:
    int subarraysWithKDistinct(vector& nums, int k) {
    //optimal: (atmost k different) - (atmost k-1 different)
    int count1 = 0, count2 = 0, l = 0, r = 0;
    unordered_map mpp;
    while(r < nums.size()){
    mpp[nums[r]]++;
    if(mpp.size() > k){
    while(mpp.size() > k){
    mpp[nums[l]]--;
    if(mpp[nums[l]]==0)
    mpp.erase(nums[l]);
    l++;
    }
    }
    if(mpp.size() k-1){
    while(mpp.size() > k-1){
    mpp[nums[l]]--;
    if(mpp[nums[l]]==0)
    mpp.erase(nums[l]);
    l++;
    }
    }
    if(mpp.size()

  • @ashishsinghNITR
    @ashishsinghNITR 6 หลายเดือนก่อน

    Hii striver, you are wonderful
    for helping millions of peoples with your knowledge. ❤❤

  • @DeadPoolx1712
    @DeadPoolx1712 15 วันที่ผ่านมา

    UNDERSTOOD;

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

    00:04 Count the number of subarrays with exactly K different integers.
    02:26 Use two pointers and a sliding window to find subarrays with k different integers
    04:52 Algorithm for counting total number of subarrays with k different integers
    07:12 Using count and frequency to determine valid windows
    09:43 Using sliding window to find subarrays with k different integers.
    12:16 Creating valid subarrays using 2 Pointers and Sliding Window approach
    14:37 Using sliding window to find subarrays with k different integers
    17:03 Using the sliding window technique to solve for subarrays with k different integers.
    19:17 Discussion on time and space complexity with the use of map data structure.
    Crafted by Merlin AI.

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

    Hey can anyone explain me why space complexity is O(n) I think it should be O(k+1) because as soon as size exceeds 2*(k+1) we are shrinking the window .Please rectify me if I am wrong 😊

  • @aayushgakhar3525
    @aayushgakhar3525 2 หลายเดือนก่อน

    gives tle for string w exactly k diff chars

  • @varrnitjaiswal1484
    @varrnitjaiswal1484 6 หลายเดือนก่อน +9

    Bro can predict future. Daily problem solvers can relate.

    • @kenil98
      @kenil98 6 หลายเดือนก่อน

    • @taqimustafa7665
      @taqimustafa7665 6 หลายเดือนก่อน

      hahaha yes.i had seen the videoes before this and thought i watch the playlist from this video today,saw daily question,was easy to solve from the previous videoes knowledge and now when i open this playlist again,i see this video hahah

  • @foziezzz1250
    @foziezzz1250 4 หลายเดือนก่อน +1

    How can we do this in O(N) time instead of O(2N) time ..??❓ 🤔🤔

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

      with sliding window i dont think so

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

      We can use 3 pointer approach for that

  • @shivangitiwari2485
    @shivangitiwari2485 6 หลายเดือนก่อน

    Understood

  • @prasannavenkkatesh1192
    @prasannavenkkatesh1192 5 หลายเดือนก่อน +1

    Why cant we use set?

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

      We need number and its freq set stores single thing not key value pairs

  • @md.sabbirahmed4482
    @md.sabbirahmed4482 6 หลายเดือนก่อน

    Sir please add OPPS playlist.

    • @akworld2739
      @akworld2739 5 หลายเดือนก่อน

      ok opps

  • @niteshkumarjha7914
    @niteshkumarjha7914 6 หลายเดือนก่อน +4

    here is java solution code
    class Solution {
    public int subarraysWithKDistinct(int[] nums, int k) {
    int subK = helper(nums,k);
    int sub = helper(nums,k-1);
    return subK-sub;
    }
    private int helper(int nums[], int k){
    HashMap map = new HashMap();
    int left=0;
    int right=0;
    int count=0;
    while(rightk){
    map.put(nums[left],map.get(nums[left])-1);
    if(map.get(nums[left])==0){
    map.remove(nums[left]);
    }
    left++;
    }
    count = count+ right-left+1;
    right++;
    }
    return count;
    }
    }

    • @jitinroy2246
      @jitinroy2246 วันที่ผ่านมา

      in helper function, i think you missed the edge case when k is negative.
      if(k < 0){
      return 0;
      }

  • @raushankumargupta7018
    @raushankumargupta7018 5 หลายเดือนก่อน

    Striver❤

  • @akworld2739
    @akworld2739 5 หลายเดือนก่อน +1

    mujhse ek question bhi nhi ho rha sliding window ka bus brute force soch pa rha hu lag rha hai coding mere bas ki bat nhi

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

    class Solution {
    int subarraywithlessthankequaltok(vector& nums, int k){
    int n=nums.size();
    int l=0,r=0,cnt=0;
    map mpp;
    while(rk){
    mpp[nums[l]]--;
    if(mpp[nums[l]]==0){
    mpp.erase(nums[l]);
    }
    l++;
    }
    cnt=cnt+(r-l+1);
    r++;
    }
    return cnt;
    }
    public:
    int subarraysWithKDistinct(vector& nums, int k) {
    return subarraywithlessthankequaltok(nums,k)-subarraywithlessthankequaltok(nums,k-1);
    }
    };

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

    This is similar to lats 2 questions

  • @THOSHI-cn6hg
    @THOSHI-cn6hg หลายเดือนก่อน +1

    ok]

  • @HimanshuYadav-fg8sm
    @HimanshuYadav-fg8sm 6 หลายเดือนก่อน

    Same code in java
    class Solution {
    public int subarraysWithKDistinct(int[] nums, int k) {
    return fun(nums,k)-fun(nums,k-1);
    }
    int fun(int []nums,int k){
    Map frequencyMap = new HashMap();
    int left = 0, right = 0, count = 0;
    while (right < nums.length) {
    frequencyMap.put(nums[right], frequencyMap.getOrDefault(nums[right], 0) + 1);
    while (frequencyMap.size() > k) {
    frequencyMap.put(nums[left], frequencyMap.get(nums[left]) - 1);
    if (frequencyMap.get(nums[left]) == 0) {
    frequencyMap.remove(nums[left]);
    }
    left++;
    }
    count=count+(right-left+1);
    right++;
    }
    return count;
    }
    }

  • @imdavinder
    @imdavinder 6 หลายเดือนก่อน

    I have still the confusion like How (

    • @teja1184
      @teja1184 6 หลายเดือนก่อน

      when sliding window shrinking is happening then at that time we will use k-1 probably this case arises when there is problems ask us to count. Even in the above problem also when we took up to k then we missed few subarrays so at that time we take k-1 . so by subtracting k and (k-1) we get the exact answer

    • @diwakaranagrawal4673
      @diwakaranagrawal4673 6 หลายเดือนก่อน +11

      for example, k=3
      if we take (i)
      and for (ii)
      so to find for k==3, if we subtract (i) - (ii) => x=3=k
      hope this helps.

    • @imdavinder
      @imdavinder 6 หลายเดือนก่อน +1

      @@diwakaranagrawal4673 Thank you for the crystal clear explanation !

    • @TarunKumar-cn6in
      @TarunKumar-cn6in 3 หลายเดือนก่อน

      @@diwakaranagrawal4673 we can also do
      it by (

  • @angeldeveloper
    @angeldeveloper 6 หลายเดือนก่อน

    🎉🎉

  • @leslysujith8032
    @leslysujith8032 5 หลายเดือนก่อน

    i im leithls aka the lethal sujith

  • @ManishKumar-dk8hl
    @ManishKumar-dk8hl 6 หลายเดือนก่อน +2

    class Solution {
    public int help(int[] arr, int k) {
    int l = 0;
    int r = 0;
    int cnt = 0;
    HashMap mpp = new HashMap();
    while (r < arr.length) {
    mpp.put(arr[r],mpp.getOrDefault(arr[r],0)+1);
    while(mpp.size()>k){
    mpp.put(arr[l],mpp.get(arr[l])-1);
    if(mpp.get(arr[l])==0){
    mpp.remove(arr[l]);
    }
    l++;}
    cnt=cnt+r-l+1;
    r++;
    }
    return cnt;

    }
    public int subarraysWithKDistinct(int[] arr, int k) {
    return help(arr,k)-help(arr,k-1);

    }
    }

  • @karthik-varma-1579
    @karthik-varma-1579 22 วันที่ผ่านมา

    class Solution {
    public int subarraysWithKDistinct(int[] nums, int k) {
    return subArraysLessThanEqualToK(nums,k)-subArraysLessThanEqualToK(nums,k-1);
    }
    public int subArraysLessThanEqualToK(int[] nums,int k){
    int l=0,r=0,count=0;
    HashMap hm = new HashMap();
    while(r k){
    int rm = nums[l];
    hm.put(rm,hm.get(rm)-1);
    if(hm.get(rm) == 0){
    hm.remove(rm);
    }
    l++;
    }
    count += (r-l);
    r++;
    }
    return count;
    }
    }

  • @ChillCoderForever
    @ChillCoderForever 6 หลายเดือนก่อน +1

    Me first 😂😂😂

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

    can someone please correct my code
    class Solution {
    public:
    int subarraysWithKDistinct(vector& nums, int k) {
    int l=0;
    int r=0;
    int cnt=0;
    map m;
    while(rk){
    m[nums[l]]--;
    if(m[nums[l]]==0)m.erase(nums[l]);
    l++;
    }
    if(m.size()==k){
    cnt=cnt+(r-l+1);
    }
    r++;
    }
    return cnt;
    }
    };

  • @shreshthkushwaha
    @shreshthkushwaha 6 หลายเดือนก่อน

    bruh

  • @dayashankarlakhotia4943
    @dayashankarlakhotia4943 6 หลายเดือนก่อน

    public int subarraysWithKDistinct(int[]nums,int k){
    return atMostK(nums,k)-atMostK(nums,k-1);
    }
    private int atMostK(int[]nums,int k){
    int ans=0;int[]cnt=new int[nums.length+1];
    for(int l=0,r=0;r