We are given an array arr[] of size n. Numbers are from 1 to (n-1) in random order. The array has only one repetitive element. We need to find the repetitive element.
Examples :
Input : a[] = {1, 3, 2, 3, 4}
Output : 3
Input : a[] = {1, 5, 1, 2, 3, 4}
Output : 1
Method 1 (Simple) We use two nested loops. The outer loop traverses through all elements and the inner loop check if the element picked by outer loop appears anywhere else.
Time Complexity : O(n*n)
Method 2 (Using Sum Formula): We know sum of first n-1 natural numbers is (n – 1)*n/2. We compute sum of array elements and subtract natural number sum from it to find the only missing element.
C++
// CPP program to find the only repeating // element in an array where elements are // from 1 to n-1. #include <bits/stdc++.h> using namespace std; int findRepeating(int arr[], int n) { // Find array sum and subtract sum // first n-1 natural numbers from it // to find the result. return accumulate(arr , arr+n , 0) - ((n - 1) * n/2); } // driver code int main() { int arr[] = { 9, 8, 2, 6, 1, 8, 5, 3, 4, 7 }; int n = sizeof(arr) / sizeof(arr[0]); cout << findRepeating(arr, n); return 0; } |
Java
// Java program to find the only repeating // element in an array where elements are // from 1 to n-1. import java.io.*; import java.util.*; class GFG { static int findRepeating(int[] arr, int n) { // Find array sum and subtract sum // first n-1 natural numbers from it // to find the result. int sum = 0; for (int i = 0; i < n; i++) sum += arr[i]; return sum - (((n - 1) * n) / 2); } // Driver code public static void main(String args[]) { int[] arr = { 9, 8, 2, 6, 1, 8, 5, 3, 4, 7 }; int n = arr.length; System.out.println(findRepeating(arr, n)); } } // This code is contributed by rachana soma |
Python3
# Python3 program to find the only # repeating element in an array where # elements are from 1 to n-1. def findRepeating(arr, n): # Find array sum and subtract sum # first n-1 natural numbers from it # to find the result. return sum(arr) -(((n - 1) * n) // 2) # Driver Code arr = [9, 8, 2, 6, 1, 8, 5, 3, 4, 7] n = len(arr) print(findRepeating(arr, n)) # This code is contributed # by mohit kumar |
C#
// C# program to find the only repeating // element in an array where elements are // from 1 to n-1. using System; class GFG { static int findRepeating(int[] arr, int n) { // Find array sum and subtract sum // first n-1 natural numbers from it // to find the result. int sum = 0; for (int i = 0; i < n; i++) sum += arr[i]; return sum - (((n - 1) * n) / 2); } // Driver code public static void Main(String []args) { int[] arr = { 9, 8, 2, 6, 1, 8, 5, 3, 4, 7 }; int n = arr.Length; Console.WriteLine(findRepeating(arr, n)); } } /* This code contributed by PrinciRaj1992 */ |
8
Time Complexity : O(n)
Auxiliary Space : O(1)
Causes overflow for large arrays.
Method 3 (Use Hashing): Use a hash table to store elements visited. If a seen element appears again, we return it.
C++
// CPP program to find the only repeating // element in an array where elements are // from 1 to n-1. #include <bits/stdc++.h> using namespace std; int findRepeating(int arr[], int n) { unordered_set<int> s; for (int i=0; i<n; i++) { if (s.find(arr[i]) != s.end()) return arr[i]; s.insert(arr[i]); } // If input is correct, we should // never reach here return -1; } // driver code int main() { int arr[] = { 9, 8, 2, 6, 1, 8, 5, 3, 4, 7 }; int n = sizeof(arr) / sizeof(arr[0]); cout << findRepeating(arr, n); return 0; } |
Java
import java.util.*; // Java program to find the only repeating // element in an array where elements are // from 1 to n-1. class GFG { static int findRepeating(int arr[], int n) { HashSet<Integer> s = new HashSet<Integer>(); for (int i = 0; i < n; i++) { if (s.contains(arr[i])) return arr[i]; s.add(arr[i]); } // If input is correct, we should // never reach here return -1; } // Driver code public static void main(String[] args) { int arr[] = { 9, 8, 2, 6, 1, 8, 5, 3, 4, 7 }; int n = arr.length; System.out.println(findRepeating(arr, n));; } } // This code is contributed by Rajput-Ji |
Python3
# Python3 program to find the only # repeating element in an array # where elements are from 1 to n-1. def findRepeating(arr, n): s = set() for i in range(n): if arr[i] in s: return arr[i] s.add(arr[i]) # If input is correct, we should # never reach here rteurn -1 # Driver code arr = [9, 8, 2, 6, 1, 8, 5, 3] n = len(arr) print(findRepeating(arr, n)) # This code is contributed # by Shrikant13 |
C#
// C# program to find the only repeating // element in an array where elements are // from 1 to n-1. using System; using System.Collections.Generic; class GFG { static int findRepeating(int []arr, int n) { HashSet<int> s = new HashSet<int>(); for (int i = 0; i < n; i++) { if (s.Contains(arr[i])) return arr[i]; s.Add(arr[i]); } // If input is correct, we should // never reach here return -1; } // Driver code public static void Main(String[] args) { int []arr = { 9, 8, 2, 6, 1, 8, 5, 3, 4, 7 }; int n = arr.Length; Console.WriteLine(findRepeating(arr, n));; } } // This code has been contributed by 29AjayKumar |
8
Time Complexity : O(n)
Auxiliary Space : O(n)
Method 4(Use XOR): The idea is based on the fact that x ^ x = 0 and x ^ y = y ^ x.
1) Compute XOR of elements from 1 to n-1.
2) Compute XOR of array elements.
3) XOR of above two would be our result.
C++
// CPP program to find the only repeating // element in an array where elements are // from 1 to n-1. #include <bits/stdc++.h> using namespace std; int findRepeating(int arr[], int n) { // res is going to store value of // 1 ^ 2 ^ 3 .. ^ (n-1) ^ arr[0] ^ // arr[1] ^ .... arr[n-1] int res = 0; for (int i=0; i<n-1; i++) res = res ^ (i+1) ^ arr[i]; res = res ^ arr[n-1]; return res; } // driver code int main() { int arr[] = { 9, 8, 2, 6, 1, 8, 5, 3, 4, 7 }; int n = sizeof(arr) / sizeof(arr[0]); cout << findRepeating(arr, n); return 0; } |
Java
// Java program to find the only repeating // element in an array where elements are // from 1 to n-1. class GFG { static int findRepeating(int arr[], int n) { // res is going to store value of // 1 ^ 2 ^ 3 .. ^ (n-1) ^ arr[0] ^ // arr[1] ^ .... arr[n-1] int res = 0; for (int i = 0; i < n - 1; i++) res = res ^ (i + 1) ^ arr[i]; res = res ^ arr[n - 1]; return res; } // Driver code public static void main(String[] args) { int arr[] = { 9, 8, 2, 6, 1, 8, 5, 3, 4, 7 }; int n = arr.length; System.out.println(findRepeating(arr, n)); } } // This code is contributed by // Smitha Dinesh Semwal. |
Python3
# Python3 program to find the only # repeating element in an array where # elements are from 1 to n-1. def findRepeating(arr, n): # res is going to store value of # 1 ^ 2 ^ 3 .. ^ (n-1) ^ arr[0] ^ # arr[1] ^ .... arr[n-1] res = 0 for i in range(0, n-1): res = res ^ (i+1) ^ arr[i] res = res ^ arr[n-1] return res # Driver code arr = [9, 8, 2, 6, 1, 8, 5, 3, 4, 7] n = len(arr) print(findRepeating(arr, n)) # This code is contributed by Smitha Dinesh Semwal. |
C#
// C# program to find the // only repeating element // in an array where elements // are from 1 to n-1. using System; class GFG { static int findRepeating(int []arr, int n) { // res is going to store // value of 1 ^ 2 ^ 3 .. // ^ (n-1) ^ arr[0] ^ // arr[1] ^ .... arr[n-1] int res = 0; for (int i = 0; i < n - 1; i++) res = res ^ (i + 1) ^ arr[i]; res = res ^ arr[n - 1]; return res; } // Driver code public static void Main() { int []arr = { 9, 8, 2, 6, 1, 8, 5, 3, 4, 7 }; int n = arr.Length; Console.Write(findRepeating(arr, n)); } } // This code is contributed // by Smitha Dinesh Semwal. |
PHP
<?php // PHP program to find the only repeating // element in an array where elements are // from 1 to n-1. function findRepeating($arr, $n) { // res is going to store value of // 1 ^ 2 ^ 3 .. ^ (n-1) ^ arr[0] ^ // arr[1] ^ .... arr[n-1] $res = 0; for($i = 0; $i < $n - 1; $i++) $res = $res ^ ($i + 1) ^ $arr[$i]; $res = $res ^ $arr[$n - 1]; return $res; } // Driver Code $arr =array(9, 8, 2, 6, 1, 8, 5, 3, 4, 7); $n = sizeof($arr) ; echo findRepeating($arr, $n); // This code is contributed by ajit ?> |
8
Time Complexity : O(n)
Auxiliary Space : O(1)
Method 5 : Using indexing.
1. Iterate through the array.
2. For every index visit a[index], if it is positive change the sign of element at a[index] index, else print the element.
C++
// CPP program to find the only // repeating element in an array // where elements are from 1 to n-1. #include <bits/stdc++.h> using namespace std; // Function to find repeted element int findRepeating(int arr[], int n) { int missingElement = 0; // indexing based for (int i = 0; i < n; i++){ int element = arr[abs(arr[i])]; if(element < 0){ missingElement = arr[i]; break; } arr[abs(arr[i])] = -arr[abs(arr[i])]; } return abs(missingElement); } // driver code int main() { int arr[] = { 5, 4, 3, 9, 8, 9, 1, 6, 2, 5}; int n = sizeof(arr) / sizeof(arr[0]); cout << findRepeating(arr, n); return 0; } |
Java
// Java program to find the only // repeating element in an array // where elements are from 1 to n-1. import java.lang.Math.*; class GFG { // Function to find repeted element static int findRepeating(int arr[], int n) { int missingElement = 0; // indexing based for (int i = 0; i < n; i++){ int element = arr[Math.abs(arr[i])]; if(element < 0){ missingElement = arr[i]; break; } arr[Math.abs(arr[i])] = -arr[Math.abs(arr[i])]; } return Math.abs(missingElement); } // Driver code public static void main(String[] args) { int arr[] = { 5, 4, 3, 9, 8, 9, 1, 6, 2, 5}; int n = arr.length; System.out.println(findRepeating(arr, n)); } } // This code is contributed by // Smitha Dinesh Semwal. |
Python3
# Python3 program to find the only # repeating element in an array # where elements are from 1 to n-1. # Function to find repeted element def findRepeating(arr, n): missingElement = 0 # indexing based for i in range(0, n): element = arr[abs(arr[i])] if(element < 0): missingElement = arr[i] break arr[abs(arr[i])] = -arr[abs(arr[i])] return abs(missingElement) # Driver code arr = [5, 4, 3, 9, 8, 9, 1, 6, 2, 5] n = len(arr) print(findRepeating(arr, n)) # This code is contributed by Smitha Dinesh Semwal. |
C#
using System; // C# program to find the only // repeating element in an array // where elements are from 1 to n-1. public class GFG { // Function to find repeted element public static int findRepeating(int[] arr, int n) { int missingElement = 0; // indexing based for (int i = 0; i < n; i++) { int element = arr[Math.Abs(arr[i])]; if (element < 0) { missingElement = arr[i]; break; } arr[Math.Abs(arr[i])] = -arr[Math.Abs(arr[i])]; } return Math.Abs(missingElement); } // Driver code public static void Main(string[] args) { int[] arr = new int[] {5, 4, 3, 9, 8, 9, 1, 6, 2, 5}; int n = arr.Length; Console.WriteLine(findRepeating(arr, n)); } } // This code is contributed by Shrikant13 |
PHP
<?php // PHP program to find the only // repeating element in an array // where elements are from 1 to n-1. // Function to find repeted element function findRepeating($arr, $n) { $missingElement = 0; // indexing based for ($i = 0; $i < $n; $i++) { $element = $arr[abs($arr[$i])]; if($element < 0) { $missingElement = $arr[$i]; break; } $arr[abs($arr[$i])] = -$arr[abs($arr[$i])]; } return abs($missingElement); } // Driver Code $arr = array (5, 4, 3, 9, 8, 9, 1, 6, 2, 5); $n = sizeof($arr); echo findRepeating($arr, $n); // This code is contributed by ajit ?> |
Output :
9
Time Complexiy : O(n)
Auxiliary Space : O(1)
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

