剑指 Offer 53 - II. 0~n-1中缺失的数字 - 力扣(LeetCode)
类似题:268. 缺失数字 - 力扣(LeetCode)
不本本题是排序的,更简单
一次遍历:
class Solution { public: int missingNumber(vector<int>& nums) { for(int i = 0; i < nums.size(); ++i){ if(nums[i] != i) return i; } return nums.size(); } };既然是有序的,就可以使用二分:
class Solution { public: int missingNumber(vector<int>& nums) { int l = 0, r = nums.size()-1; //寻找第一个nums[i] != i的元素 while(l <= r){ int mid = (l + r)/2; if(mid != nums[mid]){ if(mid == l || nums[mid-1] == mid-1) return mid; r = mid - 1; } else l = mid + 1; } return nums.size(); } };