Medium
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.
Note:
Your algorithm should run in linear runtime complexity. Could you implement it using only constant extra space complexity?
2ms:
public int missingNumber(int[] nums) {
int[] tmp = new int[nums.length+1];
for(int i:nums){
tmp[i]++;
}
for(int j=0;j<tmp.length;j++){
if(tmp[j]==0)
return j;
}
return 1;
}
1ms:
public int missingNumber(int[] nums) {
int re = 0;
for(int i=0;i<nums.length;i++){
re = re^i^nums[i];
}
return re^nums.length;
}
对照[LeetCode]136. Single Number&137. Single Number II&260. Single Number III
本文介绍了一种线性时间复杂度和常数额外空间复杂度的方法来找出包含0到n范围内n个不同整数的数组中缺失的那个数。通过两种实现方式对比,一种使用额外数组标记已存在的数字,另一种利用异或操作的特性高效解决问题。
383

被折叠的 条评论
为什么被折叠?



