两种做法,一种二叉搜索,一种用等差数列来做
public class Solution {
public int missingNumber(int[] nums) {
int n = nums.length;
Arrays.sort(nums);
int start = 0, end = n - 1;
while (start + 1 < end) {
int mid = start + (end - start) / 2;
if (nums[mid] > mid) {
end = mid;
} else {
start = mid;
}
}
if (start > nums[start]) {
return nums[start] + 1;
} else if (start < nums[start]) {
return nums[start] - 1;
} else if (end >= nums[end]) {
return nums[end] + 1;
} else {
return nums[end] - 1;
}
// right
// int sum = 0;
// for (int i: nums) {
// sum += i;
// }
// int n = nums.length;
// int a = n, b = n+1;
// if(n%2==0) {
// a = a/2;
// } else {
// b = b/2;
// }
// return a*b - sum;
// int length = nums.length;
// Arrays.sort(nums);
// if (length == 1 && nums[0] == 1) {
// return 0;
// }
// if (length == 1 && nums[0] == 0) {
// return 1;
// }
// for (int i = 1; i < length; i++) {
// if (nums[i] != i) {
// return i - 1;
// }
// }
// return length;
}
}
本文介绍了一种通过二分查找及等差数列的方法来寻找整数数组中缺失的一个数字。二分查找方法适用于有序数组,而等差数列方法则通过计算实际总和与预期总和之间的差异来找到缺失的数字。

1358

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



