Find the only repetitive element between 1 to n-1

27 Jun, 2022
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 the outer loop appears anywhere else.Below is the implementation of the above approach:
C++
Python3
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){    for (int i = 0; i < n; i++) {        for (int j = i + 1; j < n; j++) {            if (arr[i] == arr[j])                return arr[i];        }    }} // Driver codeint 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;}// This code is added by Arpit Jain
# Python3 program to find the only# repeating element in an array where# elements are from 1 to n-1.def findRepeating(arr, n):    for i in range(n):      for j in range(i + 1, n):        if (arr[i] == arr[j]):          return arr[i];         # Driver Codearr = [9, 8, 2, 6, 1, 8, 5, 3, 4, 7]n = len(arr)print(findRepeating(arr, n)) # This code is contributed by Arpit Jain
// C# program to find the only repeating// element in an array where elements are// from 1 to n-1.using System; public class GFG {    static int findRepeating(int[] arr)    {        for (int i = 0; i < arr.Length; i++) {            for (int j = i + 1; j < arr.Length; j++) {                if (arr[i] == arr[j])                    return arr[i];            }        }        return -1;    }     // Driver code     static public void Main()    {        // Code        int[] arr = new int[] { 9, 8, 2, 6, 1, 8, 5, 3, 4, 7 };        int repeatingNum = findRepeating(arr);        Console.WriteLine(repeatingNum);    }} // This code is contributed by Mohd Nizam
8
Time Complexity: O(n2)Auxiliary Space: O(1)
Method 2 (Using Sorting), 
first sort the array and just compare the array element with its index 
if arr[i] != i+1, it means that arr[i] is repetitive. So Just return arr[I] 
So Just return arr[I] 
Otherwise, array does not contain duplicates from 1 to n-1In this case return -1  
In this case return -1  
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){    sort(arr, arr + n); // sort array    for (int i = 0; i <= n; i++) {        // compare array element with its index        if (arr[i] != i + 1) {            return arr[i];        }    }    return -1;} // driver codeint 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;}// this code is contributed by devendra solunke
8
Time complexity: O(N*log N)  compare every array element with its indexAuxiliary Space: O(1)
Method 3 (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++
Java
Python3
C#
Javascript
// 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 codeint 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 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 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 Codearr = [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# 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 */
<script>// javascript program to find the only repeating// element in an array where elements are// from 1 to n-1.   function findRepeating(arr , n){         // Find array sum and subtract sum        // first n-1 natural numbers from it        // to find the result.        var sum = 0;        for (i = 0; i < n; i++)            sum += arr[i];        return sum - (((n - 1) * n) / 2);    }     // Driver code        var arr = [ 9, 8, 2, 6, 1, 8, 5, 3, 4, 7 ];        var n = arr.length;        document.write(findRepeating(arr, n)); // This code is contributed by Rajput-Ji</script>
8
Time Complexity: O(n)Auxiliary Space: O(1)Causes overflow for large arrays.
Method 4 (Use Hashing): Use a hash table to store elements visited. If a seen element appears again, we return it.
C++
Java
Python3
C#
Javascript
// 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 codeint 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;}
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 codepublic 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 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    return -1 # Driver codearr = [9, 8, 2, 6, 1, 8, 5, 3]n = len(arr)print(findRepeating(arr, n)) # This code is contributed# by Shrikant13
// 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 codepublic 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
<script>    // JavaScript program to find the only repeating// element in an array where elements are// from 1 to n-1. function findRepeating(arr,n){  s = new Set();   for (let i = 0; i < n; i++)   {      if (s.has(arr[i]))         return arr[i];      s.add(arr[i]);   }       // If input is correct, we should   // never reach here   return -1;} // driver codelet arr = [ 9, 8, 2, 6, 1, 8, 5, 3, 4, 7 ];let n = arr.length;document.write(findRepeating(arr, n)); // This code is contributed by shinjanpatra.</script>
8
Time Complexity: O(n)Auxiliary Space: O(n)
Method 5(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++
Java
Python3
C#
PHP
Javascript
// 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 codeint 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 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 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 codearr = [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# program to find the only repeating// element in an array where elements are// from 1 to n-1.using System;public 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;    Console.WriteLine(findRepeating(arr, n));  }} // This code is contributed by Rajput-Ji
<?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?>
<script> // JavaScript 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]  let res = 0;  for (let i=0; i<n-1; i++)    res = res ^ (i+1) ^ arr[i];  res = res ^ arr[n-1];  return res;} // driver code let arr = [ 9, 8, 2, 6, 1, 8, 5, 3, 4, 7 ];let n = arr.length;document.write(findRepeating(arr, n)); </script>
8
Time Complexity: O(n)Auxiliary Space: O(1)
Method 6: 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++
Java
Python3
C#
PHP
Javascript
// 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 repeated elementint 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 codeint 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 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 repeated element    static int findRepeating(int arr[], int n)    {        int missingElement = 0;             // indexing based        for (int i = 0; i < n; i++){                 int absVal = Math.abs(arr[i]);            int element = arr[absVal];                 if(element < 0){                missingElement = arr[i];                break;            }                 int absVal = Math.abs(arr[i]);        arr[absVal] = -arr[absVal];    }         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 program to find the only# repeating element in an array# where elements are from 1 to n-1. # Function to find repeated elementdef 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 codearr = [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# program to find the only// repeating element in an array// where elements are from 1 to n-1.using System; public class GFG{   // Function to find repeated element  static int findRepeating(int[] arr, int n)  {    int missingElement = 0;     // indexing based    for (int i = 0; i < n; i++) {             int absVal = Math.abs(arr[i]);            int element = arr[absVal];       if (element < 0) {        missingElement = arr[i];        break;      }       int absVal = Math.abs(arr[i]);      arr[absVal] = -arr[absVal];    }     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;     Console.WriteLine(findRepeating(arr, n));  }} // this code is contributed by phasing17
<?php// PHP program to find the only// repeating element in an array// where elements are from 1 to n-1. // Function to find repeated elementsfunction 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?>
<script>        // JavaScript program for the above approach;        // Function to find repeated element       function findRepeating(arr, n) {           let missingElement = 0;            // indexing based           for (let i = 0; i < n; i++) {                let absVal = Math.abs(arr[i]);               let element = arr[absVal];                if (element < 0) {                   missingElement = arr[i];                   break;               }                let absVal = Math.abs(arr[i]);               arr[absVal] = -arr[absVal];           }            return Math.abs(missingElement);        }        // driver code        let arr = [5, 4, 3, 9, 8,           9, 1, 6, 2, 5];        let n = arr.length;        document.write(findRepeating(arr, n));  // This code is contributed by Potta Lokesh   </script>
9
Time Complexity: O(n)Auxiliary Space: O(1) 
jit_t
Smitha Dinesh Semwal
shrikanth13
mohit kumar 29
Rajput-Ji
rachana soma
princiraj1992
29AjayKumar
sumitgumber28
lokeshpotta20
arorakashish0911
surindertarika1234
shinjanpatra
phasing17
_shinchancode
111arpit1
alinizam72
devendrasalunke
Bitwise-XOR
cpp-unordered_set
limited-range-elements
Arrays
Hash
Searching
Arrays
Searching
Hash
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.