class Solution {
public int missingNumber(int[] nums) {
int length=nums.length;
int temp[]=new int[length+1];
for(int i=0;i<nums.length;i++){
temp[nums[i]]=1;
}
for(int i=0;i<temp.length;i++){
if(temp[i]==0)
return i;
}
return 1;
}
}
时间上线性了,空间上还是没有常数级别。
我们可以用 高斯求和公式 求出 [0…n]的和,减去数组中所有数的和,就得到了缺失的数字。这个思路好聪明
class Solution {
public int missingNumber(int[] nums) {
int n=nums.length;
int sum=0;
for(int i=0;i<nums.length;i++){
sum+=nums[i];
}
return n*(n+1)/2-sum;
}
}