Leetcode 268. 丢失的数字
排序
class Solution {
public int missingNumber(int[] nums) {
Arrays.sort(nums);
int length = nums.length;
if (nums[length - 1] != length) {
return length;
}
for (int i = 0; i < length; i++) {
if (nums[i] != i) {
return i;
}
}
return -1;
}
}
哈希
class Solution {
public int missingNumber(int[] nums) {
Set<Integer> set = new HashSet<>();
for (int num : nums) {
set.add(num);
}
for (int i = 0; i < nums.length + 1; i++) {
if (!set.contains(i)) {
return i;
}
}
return -1;
}
}
位运算
class Solution {
public int missingNumber(int[] nums) {
int missing = nums.length;
for (int i = 0; i < nums.length; i++) {
missing ^= (i ^ nums[i]);
}
return missing;
}
}