/*
题目描述
请实现有重复数字的升序数组的二分查找
给定一个 元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1
输入
[1,2,4,4,5],4
返回值
2
*/
class Solution {
public:
int search(vector<int>& nums, int target) {
int left = 0;
int right = nums.size() - 1;
while(left < right) {
int halfIndex = left + (right - left)/2;
if (nums[halfIndex] < target) {
left = halfIndex + 1;
} else {
right = halfIndex;
}
}
return (right >= 0 && nums[right] == target) ? right : -1;
}
};