LeetCode典型技巧题编汇
268. Missing Number
Description
Given an array containing n distinct numbers taken from 0, 1, 2, ..., n, find the one that is missing from the array.
Example 1
|
|
Example 2
|
|
Solution
传统思维(O(n)的空间复杂度):使用哈希的思想,试图用数组等结构记录那些数已经出现过。
优秀解法(O(1)的空间复杂度):
1.利用亦或运算的特性:同一个数亦或两次抵消。因此开始可以先置初值0,然后将每个数[0,n]亦或一遍,再将数组中的每个数亦或一遍。因此数组中出现的数最终会被亦或两遍,而只有“Missing Number”最终只会被亦或一遍。由于初值是0,亦或两遍后留存的值即是“Missing Number”。
2.利用加和:利用高斯求和公式求出如果每个数都有的情况下的加和,再逐个减去数组中出现的数,最终得到“Missing Number”。