解题思路:
- 排序数组中的搜索问题,首先可以想到二分法解决。
- 根据题意,数组可以按照下面的规则进行划分为两部分。
左子数组:nums[i]=i;
右子数组:nums[i]!=i;
- 缺失的数字等于“右子数组的首位元素”对应的索引;因此考虑使用二分法查找“由子数组的首位元素”。
1 int missingNumber(int* nums, int numsSize){ 2 int i=0,j=numsSize-1; 3 int m; 4 while(i<=j) 5 { 6 m=(i+j)/2; 7 if(nums[m]==m) 8 { 9 i=m+1; 10 } 11 else 12 { 13 j=m-1; 14 } 15 } 16 return i; 17 }