You can use a variation of radix sort:
sort numbers according to MSb (Most Significant bit)
You get two lists of sizes n/2, n/2-1. You can 'drop' the list with n/2 elements - the missing number is not there.
Repeat for the second MSb and so on.
At the end, the 'path' you have chosen (the bit with the smaller list for each bit) will represent the missing number.
Complexity is O(n + n/2 + ... + 2 + 1)
, and since n + n/2 + .. + 1 < 2n
- this is O(n)
This answer assumes for simplicity that n=2^k
for some integer k
(this relaxation can be later dropped off, by doing s 'special' handle for the MSb).