题目描述

进阶:你能否实现线性时间复杂度、仅使用额外常数空间的算法解决此问题?
思路
等差数列求和,和数组的差就是缺少的那个数
public int missingNumber(int[] nums) {// 等差数列求和公式int sum = (nums.length + 1) * nums.length / 2;for (int num : nums) {sum = sum - num;}return sum;}
可以采用异或运算
public int missingNumber(int[] nums) {int rs = 0;for (int i = 0; i < nums.length; i++) {rs = rs ^ i;rs = rs ^ nums[i];}rs = rs ^ nums.length;return rs;}
