Count Distinct Elements in Every Window of Size K

Count Distinct Elements in Every Window of Size K.

Given an array of n integers and an integer k (k is always smaller or equal to n).  Return the count of distinct elements in all windows (or in all sub-arrays) of size k.

For example –

   Example 1:

  Input: {1, 5, 9, 3, 3, 7, 3},   k = 3

  Output: {3, 3, 2, 2, 2}

1st window {1, 5, 9}, Distinct elements are 3.

2nd window {5, 9, 3}, Distinct elements are 3.

3rd window {9, 3, 3}, Distinct elements are 2.

4th window {3, 3, 7}, Distinct elements are 2.

5th window {3, 7, 3}, Distinct elements are 2.

   Example 2:

  Input: {1, 4, 7, 7},   k = 2

  Output: {2, 2, 1}

1st window {1, 4}, Distinct elements are 2.

2nd window {4, 7}, Distinct elements are 2.

3rd window {7, 7}, Distinct elements are 1.

Count Distinct Elements in Every Window of Size K

Programming Tutorials

In this problem, we have to find the distinct elements count in all the sub-arrays of size k. The size of output array is always n-k+1 (where n is the length of array, k is the size of window).

This problem can be efficiently solved through sliding window approach. I have also added video tutorial at the end of this post.

Count Distinct Elements in Every Window of Size K – Java Code

An efficient approach to solve this problem is to form a window of size k. After that put all the elements and it’s count of this window in a HashMap. The keys are always unique in a HashMap. So, the number of distinct elements present in this window is the size of a HashMap.

We have computed the result of one window. After that run a loop from 1 to n-k and do the following operations.

i) Remove previous element from a HashMap.

ii) Add new element in a HashMap. The count of distinct elements in this window is the size of HashMap.

The time and space complexity of this approach is O(n).


Tagged , . Bookmark the permalink.

About WebRewrite

I am technology lover who loves to keep updated with latest technology. My interest field is Web Development.