1 题目
2 Java
2.1 方法一(二分查找变形)
class Solution {
public int missingNumber(int[] nums) {
// 若[0,1,3],最后定位的是,l==2,即l位缺失,值比索引大
int l = 0, r = nums.length;
while(l < r){ // 根据l/r范围界定 决定 是否带=
int m = (l + r) / 2;
if(nums[m] == m) l = m + 1;
else if(nums[m] > m) r = m;
}
return l;
}
}
2.2 方法二(2.1优化)
class Solution {
public int missingNumber(int[] nums) {
// 若[0,1,3],最后定位的是,l==2,即l位缺失,值比索引大
int l = 0, r = nums.length - 1;
while(l <= r){ // 根据l/r范围界定 决定 是否带=
int m = (l + r) / 2;
if(nums[m] == m) l = m + 1;
else if(nums[m] > m) r = m - 1;
}
return l;
}
}