class Solution {
public int missingNumber(int[] nums) {
int left = 0;
int right = nums.length;
while (left < right) {
int mid = left + (right - left) / 2;
if (nums[mid] == mid) {
left = mid + 1;
} else {
right = mid;
}
}
return left;
}
}
class Solution {
public int missingNumber(int[] nums) {
int left = 0, right = nums.length-1;
while(left <= right){
int mid = left + (right - left)/2;
if(nums[mid] == mid){
left = mid + 1;
}else{
right = mid - 1;
}
}
return left;
}
}
class Solution {
public int missingNumber(int[] nums) {
int res = nums.length;
int l = 0;
int r = nums.length-1;
while(l<=r){
int m = l+((r-l)>>1);
if(m==nums[m]){
l=m+1;
}else{
res=m;
r = m - 1;
}
}
return res;
}
}
class Solution {
public int missingNumber(int[] nums) {
int n = nums.length + 1;
int l = 0;
int r = nums.length - 1;
if (nums[r] == n - 2) {
return n - 1;
}
while (l < r) {
int mid = (r - l) / 2 + l;
if (nums[mid] > mid) {
r = mid;
} else {
l = mid + 1;
}
}
return l;
}
}
共以下 9 个回答
暴力搜索
这个题翻译一下,找出数组中第一个大于索引值得元素的索引
处理好边界
二分查找:O(log(n))
二分查找
正常情况下,nums[mid]=mid; 以此为条件,套用地哥的二分查找模板即可