题干
分析
两种方法进行求解,1、顺序求解 2、二分查找(因为是顺序数组)
代码
package JianZhi;
public class JianZhi053 {
public static void main(String[] args) {
int[] arr = new int[] {0,1,2,3,4,5,6,7,9};
Solution2 solution = new Solution2();
System.out.println(solution.missingNumber(arr));
}
}
//方法一:顺序读取,求解
class Solution {
public int missingNumber(int[] nums) {
for (int i = 0; i < nums.length; i++) {
if (i != nums[i]) {
return i;
}
}
return nums.length;
}
}
//方法二:二分查找求解
class Solution2 {
public int missingNumber(int[] nums) {
int low = 0;
int end = nums.length;
int mid;
while (low<end) {
mid = (low + end)/2;
if (mid == nums[mid]) {
low = mid + 1;
}else {
end = mid - 1;
}
}
return (low==nums.length-1)?nums.length-1:low;
}
}