tl  tr
  Home | Tutorials | Articles | Videos | Products | Tools | Search
Interviews | Open Source | Tag Cloud | Follow Us | Bookmark | Contact   
 Articles > Java > Coding Examples > Find the Only duplicate number in an Array

Find the Only duplicate number in an Array 

Find the Only duplicate number in an Array.

File Name  :  
com/bethecoder/tutorials/coding/examples/OneDuplicateNumberTest.java 
Author  :  Sudhakar KV
Email  :  [email protected]
   
package com.bethecoder.tutorials.coding.examples;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * Find the only duplicate number in an Array. 
 */
public class OneDuplicateNumberTest {

  /**
   @param args
   */
  public static void main(String[] args) {
    Integer [] nums = 12346678910};
    System.out.println("Only duplicate element in " 
        Arrays.asList(nums" is " + getDuplicateNumber(nums));
    
    
    nums = new Integer [] { 123456789101112141415};
    System.out.println("Only duplicate element in " 
        Arrays.asList(nums" is " + getDuplicateNumber(nums));
    
    //multiple duplicates - should return -1 (invalid condition)
    nums = new Integer [] { 12234};
    System.out.println("Only duplicate element in " 
        Arrays.asList(nums" is " + getDuplicateNumber(nums));
    
  }

  /**
   * Returns the only duplicate number in array.
   
   @param nums
   @return
   */
  private static int getDuplicateNumber(Integer [] nums) {
    List<Integer> mynums = new ArrayList<Integer>(Arrays.asList(nums));
    Set<Integer> uniquenums = new HashSet<Integer>(Arrays.asList(nums));
    
    for (Integer num : uniquenums) {
      mynums.remove(num);   //Removes only the first occurrence
    }
    
    if (mynums.size() == 1) { //should left with only duplicate element
      return mynums.get(0);
    }
    
    return -1;
  }
}
   

It gives the following output,
Only duplicate element in [1, 2, 3, 4, 6, 6, 7, 8, 9, 10] is 6
Only duplicate element in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 14, 15] is 14
Only duplicate element in [1, 2, 2, 3, 4, 4] is -1



 
  


  
bl  br