class Solution:
def missingNumber(self, A: List[int]) -> int:
""" O(N) /O(1)
1. get expected sum if A is sequence
2. cnt actual sum
3. the one missing is difference
"""
n = len(A)
total = n*(n+1)//2
actual = sum(A)
return total - actual
Bit solution
class Solution:
def missingNumber(self, A: List[int]) -> int:
""" O(N) /O(1)
main idea: X ^ X = 0 and value a in range [0,N] and a is unique , => a-1 can supposedly find a index i, so (a-1) == idx
1. initialize res = len(A)
2. XOR with all val and idx in the array
3. return missing
"""
n = len(A)
missing = n
for i,a in enumerate(A):
missing ^= a ^ i
return missing