缺失数字
描述
从0,1,2,...,n这n+1个数中选择n个数,找出这n个数中缺失的那个数,要求O(n)尽可能小。
解题
/**
* 求缺失数字
* 1.逻辑异或运算; 2.数组求和
*/
public class Solution {
public static void main(String[] args) {
int[] a= {0,1,2,3,4,5,7};
Solution s = new Solution();
System.out.println(s.solve2(a));
}
public int solve (int[] a){
int xor=0;
for (int i = 0; i < a.length; i++) {
xor ^= a[i]^(i+1);//逻辑异或运算 a^0=a a^a=0
}
return xor;
}
public int solve2 (int[] a){
int xor=(a.length+0)*(a.length+1)/2;//等差序列 求和公式
int sum=0;
for (int i = 0; i < a.length; i++) {
sum+=a[i];//累加
}
return xor-sum ;
}
}