int searchInsert(vector<int>& nums, int target)
{
int low = 0;
int high = nums.size() - 1;
//未查找到的返回值
int notFind = -1;
while (low <= high)
{
//二分中点=数组左边界+(右边界-左边界)/2
//整数类型默认取下整
int mid = low + (high - low) / 2;
//中间值是如果大于key
if (nums[mid] > target)
{
//证明key在[low,mid-1]这个区间
//因为num[mid]已经判断过了所以下界要减一
high = mid - 1;
}
else if (nums[mid] < target)
{
//证明key在[mid+1,high]这个区间
//同样判断过mid对应的值要从mid+1往后判断
low = mid + 1;
}
else if(nums[mid] == target)
{
//查找成功
return mid;
}
}
//经过验证,如果该序列不存在该元素,那么插入的下标一定在high的后一位,,
notFind = high + 1;
未成功
return notFind;
}
二分查找,查找序列中的是否存在该元素,如果不存在,则返回应该插入的位置的下标
最新推荐文章于 2024-05-16 08:53:55 发布