要求:
Given an array containing n distinct numbers taken from 0, 1, 2, ..., n
,
find the one that is missing from the array.
For example,
Given nums = [0, 1, 3]
return 2
.
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?
注意:将数组放在新数组中,再将数字1-n放入新数组中。将新数组中所有元素进行异或,结果就是那个没有重复的数字,也就是Missing Number
例如:
int[] array={0,1,2,4,5}
在新数组中先放入0-5,再放入array中所有元素
int[] newarray={0,1,2,3,4,5,0,1,2,4,5}
只有3没有重复两次。
进行异或后,返回单个元素3
public int missingNumber(int[] nums) {
int[] ar = new int[2 * nums.length + 1];
for (int i = 0; i <= nums.length; i++)
ar[i] = i;
for (int i = 0; i < nums.length; i++)
ar[i + nums.length + 1] = nums[i];
int result = ar[0];
for (int i = 1; i < ar.length; i++)
result = result ^ ar[i];
return result;
}