JavaScript Program for the Minimum Index of a Repeating Element in an Array
Given an array of integers arr[], The task is to find the index of the first repeating element in it i.e. the element that occurs more than once and whose index of the first occurrence is the smallest. In this article, we will find the minimum index of a repeating element in an array in JavaScript.
Examples:
Input: arr[] = {10, 5, 3, 4, 3, 5, 6}
Output: 5
Explanation: 5 is the first element that repeats
Input: arr[] = {6, 10, 5, 4, 9, 120, 4, 6, 10}
Output: 6
Explanation: 6 is the first element that repeats
Table of Content
- Brute force approach:
- Using an Object (Hash Map)
- Using a Set:
Approach 1: Brute force approach
Here we will use nested loops by using for to compare each element with every other element in the array to return duplicates.
Syntax:
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
minIndex = Math.min(minIndex, i);
}
}
}
Example: This example shows the use of the above-explained approach.
function findMinIndexBruteForce(arr) {
let minIndex = Infinity;
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1;
j < arr.length; j++) {
if (arr[i] === arr[j]) {
minIndex =
Math.min(minIndex, i);
}
}
}
return minIndex !== Infinity
? minIndex : -1;
}
const arr1 = [3, 2, 1, 2, 4, 3];
console.log(findMinIndexBruteForce(arr1));
Output
0
Approach 2: Using an Object (Hash Map)
Here we will use an object to store the elements you have seen so far as keys and their corresponding indices as values. When we encounter a repeating element, check if its index is smaller than the current minimum index.
Syntax:
const seen = {};
function findMinIndexWithObject(arr) {
const seen = {};
let minIndex = Infinity;
for (let i = 0; i < arr.length; i++) {
if (seen[arr[i]] !== undefined) {
minIndex = Math
.min(minIndex, seen[arr[i]]);
} else {
seen[arr[i]] = i;
}
}
return minIndex !== Infinity
? minIndex : -1;
}
const arr2 = [3, 2, 1, 2, 4, 3];
console.log(findMinIndexWithObject(arr2));
Output
0
Approach 3: Using a Set
Here we will use a set to keep track of the elements you have seen so far. When we encounter a repeating element, check if it exists in the set. If it does, compare its index with the current minimum index.
Syntax:
const seen = new Set();
function findMinIndexWithSet(arr) {
// Using a Map to store the indices of elements
const seen = new Map();
let minIndex = -1;
for (let i = 0; i < arr.length; i++) {
if (seen.has(arr[i])) {
// Check if we found a repeating element
const firstIndex = seen.get(arr[i]);
if (minIndex === -1 || firstIndex < minIndex) {
// If it's the first repeating element or
//it's closer to the beginning of the array
minIndex = firstIndex;
}
} else {
seen.set(arr[i], i);
}
}
return minIndex;
}
const arr3 = [3, 2, 1, 2, 4, 3];
console.log(findMinIndexWithSet(arr3));
Output
0
Approach 4: Using an Array to Store Indices
In this approach, we utilize an array to store the indices of elements as we traverse the input array. When we encounter a repeating element, we can directly access its index from the array and compare it with the current minimum index.
- Create an array
indices
to store the indices of elements. - Initialize the
minIndex
variable to Infinity. - Iterate through the input array:
- If the current element already exists in the
indices
array, updateminIndex
with the smaller value between the current minimum index and the index of the repeating element. - Otherwise, push the index of the current element into the
indices
array.
- If the current element already exists in the
- After iterating through the entire array, check if
minIndex
has been updated. If it has, returnminIndex
; otherwise, return -1, indicating that there are no repeating elements.
Example:
function findMinIndexWithArray(arr) {
const indices = []; // Array to store indices of elements
let minIndex = Infinity;
for (let i = 0; i < arr.length; i++) {
const element = arr[i];
if (indices[element] !== undefined) {
minIndex = Math.min(minIndex, indices[element]);
} else {
indices[element] = i;
}
}
return minIndex !== Infinity ? minIndex : -1;
}
const arr = [3, 2, 1, 2, 4, 3];
console.log(findMinIndexWithArray(arr)); // Output: 0
Output
0
Contact Us