classSolution{int mid;publicintmissingNumber(int[] nums){int left =0;int right = nums.length -1;while(left <= right){int mid =(left + right)>>1;if(nums[mid]== mid){
left = mid +1;}elseif(nums[mid]> mid){
right = mid -1;}}return left;}}
位运算
利用异或运算特点,将下标与值进行异或运算。由于x ^ x = 0 ,x ^ 0 = x,配合异或运算交换律与结合律,可直接得出缺少的数字。
classSolution{publicintmissingNumber(int[] nums){int xor =0;int n = nums.length +1;for(int i =0; i < n -1; i++){
xor ^= nums[i];}for(int i =0; i <= n -1; i++){
xor ^= i;}return xor;}}
数学法
根据求和公式计算出值与数组中的数值和相减,即可求出缺少的数字
classSolution{publicintmissingNumber(int[] nums){int n = nums.length +1;int total = n *(n -1)/2;int arrSum =0;for(int i =0; i < n -1; i++){
arrSum += nums[i];}return total - arrSum;}}