JSFiddle - React, Tailwind, and code Playground

by ronilan

JavaScript

/*
- Duplicate Number -

DESCRIPTION
Given an unsorted array of n integers containing all numbers between 1...n-1 and 1 duplicate, find the duplicate.

EXAMPLE
Array: 2, 1, 3, 4, 8, 6, 5, 7, 4
Output: 4
*/

//sum = n(n+1)/2

function findDupMath(arr){

    var n = arr.length-1,
        max = n+1,
        sum = n*(n+1)/2,
        actualSum = 0; // sum of the array.
        
        for(i=0; i<max; i++){
            actualSum = actualSum + arr[i];
        }
        
        return actualSum - sum; 

}

/*
[1, 2, 2]
n =  2
max = 3
sum =  5
actualSum = 2
*/

function findDup(arr){

    var i,
        j,
        result = null;
        max = arr.length;
        
       for(i=0; i<max; i++){

           for(j=0;j<max; j++){
           
               if(arr[i] == arr[j] && i !== j ){
                   result = arr[i];
               }        
                     
           } 
           
           if(result !== null){
               break;
           }

       }

       return result;
}

var arr = [2, 1, 3, 4, 8, 6, 5, 7, 4, 9];

console.log(findDupMath(arr));
console.log(findDup(arr));