相比较下面最快的方法,我的方法还算是中规中矩了:开辟一个和给定数组一样长的布尔型数组,遍历若数字不缺失,则布尔型数组相应位置为true,最后再遍历布尔型数组,找到缺失的数。感觉还是慢了,毕竟用了两个for循环。
class Solution {
public int missingNumber(int[] nums) {
boolean[] cor = new boolean[nums.length];
for (int i = 0; i < nums.length; i ++) {
if (nums[i] < nums.length) {
cor[nums[i]] = true;
}
}
int i;
for (i = 0; i < cor.length; i ++) {
if (cor[i] == false) break;
}
return i;
}
}
最快的方法是通过数学的方式求出的,挺巧妙的:
class Solution {
public int missingNumber(int[] nums) {
int sum = 0;
for(int i = 0; i < nums.length; i ++){
sum += nums[i];
}
return nums.length * (nums.length + 1) / 2 - sum;
}
}