1 题目分析
一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。
题目链接:https://leetcode-cn.com/leetbook/read/illustration-of-algorithm/58iqo5/
思路:1、暴力解法
2、二分查找法 都很简单
2 代码实现
** 思路一**
class Solution {
public:
int missingNumber(vector<int>& nums) {
int ans;
for (int i=0;i<nums.size();i++)
{
if ( i != nums[i] )
{
ans = i;
break;
}
}
return ans;
}
};
思路二
class Solution {
public:
int missingNumber(vector<int>& nums) {
int left = 0, right = nums.size() - 1;
while(left <= right) {
int mid = (left + right) / 2;
if(nums[mid] == mid) left = mid + 1;
else right = mid - 1;
}
return left;
}
};
这里二分法反而比较慢了。