To find the missing number in an array of size N-1
where elements are from 1 to N, we can take advantage of the fact that the sum of first N natural numbers can be calculated directly using the formula:
Expected Sum = N * (N + 1) / 2
Let’s say we compute this expected sum and compare it with the sum of the actual elements present in the array. The difference between the two will tell us which number is missing.
Let’s Discuss a Few Scenarios:
1. Normal Case: Suppose the array is [1, 2, 4, 5]
and N = 5. The expected sum is 15, but the actual sum is 12. The missing number is 15 - 12 = 3
.
2. First Number Missing: In [2, 3, 4, 5]
, the missing number is 1. The formula still works: Expected = 15, Actual = 14, Missing = 1.
3. Last Number Missing: For [1, 2, 3, 4]
with N = 5, the missing number is 5. Again, Expected = 15, Actual = 10, Missing = 5.
4. Only One Element in Array: If array = [1]
and N = 2, then Expected = 3, Actual = 1, Missing = 2.
5. Empty Array Case: This is a valid edge case. If N = 1 and the array is empty []
, then the only number that could have been in the array is 1. So, 1 is the missing number.
6. Random Order: It doesn’t matter what the order of elements is. Even if the array is [3, 1, 5, 2]
, the total will still work out because the sum is independent of order.
Why This Works
Since we are not iterating over every possible number from 1 to N, but instead just comparing totals, the time complexity is O(N) (to sum the array) and the space complexity is O(1). This makes the solution optimal and suitable for large inputs.
This technique also avoids needing any extra memory like hash sets or frequency arrays.