高斯求和公式为 t o t a l = 1 + 2 + 3 + . . . . + n = ∑ i = 1 n = n ( n + 1 ) 2 total = 1+2+3+....+n =\displaystyle\sum_{i=1}^n = \dfrac{n(n+1)}{2} total=1+2+3+....+n=i=1∑n=2n(n+1)
classSolution{publicintmissingNumber(int[] nums){int n = nums.length;//获得nint total = n*(n+1)/2;//高斯求和公式int arrSum =0;//统计nums的和for(int num:nums) arrSum+=num;return total - arrSum;//返回缺少数字}}
classSolution{publicintmissingNumber(int[] nums){int ans =0;for(int i =1;i<=nums.length;i++){ans^=i;//依次异或[1,n]ans^=nums[i-1];//再次异或所有nums[0,n-1]中的数}//最后[1,n]和nums[0,n-1]中相同的数(都出现的)会抵消,剩下的只有0或者只出现一次的数(缺失的数)//而任何数a异或0都为a,这样就找到了缺失的数return ans;}}