一、题目解析
二、算法分析
找到数组的中心值与target比较,如果中心值大于target则证明target有可能在数组的左边(还有一种情况是不存在),反之在数组的右边。重新设置左右边界,折半数组的长度,如此反复,直到中心值恰好为target或者数组长度缩短为1。为1时比较中心值与target(有可能不存在)。
三、代码编写
class Solution {
public:
int search(vector<int>& nums, int target) {
int right = nums.size() - 1;
int left = 0;
while(left < right)
{
int mid = (left + right)/2;
if(nums[mid] > target)
{
right = mid-1;
}
else if(nums[mid] < target)
{
left = mid+1;
}
else
{
return mid;
}
}
if(right == left && nums[right] == target)
{
return right;
}
return -1;
}
};