https://www.nowcoder.com/practice/d3df40bd23594118b57554129cadf47b
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @param target int整型
* @return int整型
*/
int search(vector<int>& nums, int target) {
// 定义前、中、后三个下标
int len = nums.size(), start = 0, end = len - 1, mid = (start + end) - 1;
if (len == 0) return -1;
// 当target不等于中间元素时继续循环
while (nums[mid] != target) {
if (target > nums[mid]) { // 目标元素在后半部分
start = mid + 1; // 更新start, mid
mid = (mid + 1 + end) / 2;
} else { // 目标元素在前半部分
end = mid - 1; // 更新mid, end
mid = (start + mid - 1) / 2;
}
if (start > end) return -1;
}
return mid;
}
};