If all numbers were present in the array the sum would be N(N+1)/2
.
Determine the actual sum by summing up all numbers in the array in O(n), let this be Sum(Actual)
.
One number is missing, let this be j
and one number is duplicated, let this be k
. That means that
Sum(Actual) = N(N+1)/2 + k – j
derived from that
k = Sum(Actual) -N(N+1)/2 + j
Also we can calculate the sum of squares in the array, which would sum up to
n3/3 + n2/2 + n/6 if all numbers were present.
Now we can calculate the actual sum of squares in O(n), let this be Sum(Actual Squares)
.
Sum(Actual Squares) =n3/3 +
n2/2 + n/6 + k2
– j2
Now we have two equations with which we can determine j
and k
.