- 原题题目
- 代码实现(首刷自解 二分查找)
原题题目
代码实现(首刷自解 二分查找)
class Solution {
public:
int my_lower_bound(vector& nums,int target)
{
int left = 0,right = nums.size();
while(left < right)
{
int mid = (left + right)/2;
if(nums[mid] < target) left = mid+1;
else right = mid;
}
return left;
}
int singleNonDuplicate(vector& nums)
{
int ret = 0,left = 0,right = nums.size()-1;
while(left < right)
{
int pos = my_lower_bound(nums,nums[(left+right)/2]);
int size = (pos - left);
if(!(size % 2))
{
if(left == pos) left += 2;
else left = pos;
}
else right = pos - 1;
}
return nums[left];
}
};



