find single repeating number from a big array

Upasana | May 05, 2019 | 1 min read | 167 views | algorithm-datastructures


We have an array that contains large number of entries, all of them are unique except one that is repeating twice. We need to find that repeating number in a minimum time O(n) time and O(1) space complexity

Input: [1, 2, 2, 3, 4, 5, 6]
Output: 2

Sum of the Elements

We can sum up all the elements of input array and compare it with the below output:

\$1 + 2 + 3 + 4 + .. + n = (n * (n + 1)) / 2\$

The difference between actual array sum and math sum will give us the single duplicate number.

In Kotlin, we can write the below program to find the single duplicate number:

Kotlin: print single duplicate number
val array = arrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 2)
val sum = array.sum()
val mathSum = ((array.size -1) * array.size) / 2
val duplicateNumber = sum - mathSum
println(duplicateNumber)
Program output

2


Top articles in this category:
  1. How will you find out first non-repeating character from a string
  2. Merge two sorted array into a single sorted array
  3. Relative efficiency of Algorithms using Big O Notation
  4. Reverse the bits of a number and check if the number is palindrome or not
  5. Hibernate & Spring Data JPA interview questions
  6. Cracking core java interviews - question bank
  7. ION Trading Java Interview Questions

Recommended books for interview preparation:

Find more on this topic:
Buy interview books

Java & Microservices interview refresher for experienced developers.