Check if a given array contains duplicate elements within k distance from each other

We must determine whether duplicate elements exist in the supplied unordered array within the range of k, according to the issue "Check if a given array has duplicate elements within k distance from each other." The supplied array cannot fit the value of k in this instance.

Check if a given array contains duplicate elements within k distance from each other

K=2, so we see a window with two ones in it. The array includes a duplicate-containing window of size k.

EXAMPLES

Example-1

Output:

False

Example-2

Output:

True

Example-3

Output:

False

Example-4

Output:

True

Explanation

To solve this issue, we have two options. The easier method is to execute two loops, the first of which selects each element as a starting element for the second loop, known as the "Inner loop." The second loop will then compare the starting element with each element falling inside the range of "k" after that. However, this approach is not very effective; it has an O(k*n) time complexity.

Hashing is a more effective technique that we have, and it can solve the issue in O(n) time complexity. In the hashing technique, we will iterate through the array's items to determine whether or not the element is present. We shall return "True" if the element is present. If not, we will add it to the hash and, if I is larger than or equal to 'k,' we will remove the arr[i-k] element from the hash.

Checking an algorithm to see if a given array includes duplicate elements within k of one another

  • Create the empty hash set first, then add the elements of the array to it.
  • traverse the array's whole element set from left to right.
  • Verify whether the element is included in the hash or not.
    • If it's there, return "true" if it is.
    • If not, include that element in the hash.
  • After that, if "I" is greater than or equal to "k," remove the arr [i-k] element from the hash.

We will use a hash set to store the elements in it after adding each element of the array one at a time. If the element is already in the hash set, it will return true and end the loop. If not, it will keep adding elements to the set and removing the arr[i-k] element from the set. We have an array called "arr []" with some elements in it and a value k that represents the range in which we must find duplicates, if any.

CODE

Checking for duplicate elements in an array within k distance of one another in C++ code

Output:

Yes

Checking for duplicate elements in an array within k distance of one another in Java

Output:

Yes

Complexity Assessment

Complexity of Time

O (n), where "n" is the array's total number of elements. The issue can be solved linearly by using a hash set. Since employing a hash set improves the effectiveness of searches, deletions, and data insertion.

Complexity of Space

O (k), where "k" denotes the quantity of window elements that must be examined.