持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情
s1-数组-2
二分问题的同类衍生题目
力扣35题
#1上题目
#2.展开分析
这个题目我们有几个点可以考虑一下
- 有序的数组
- 没有重复元素
这个题目满足使用二分的条件,所以我们可以使用二分来进行书写
其次我们还要考虑插入,取值的的几种情况
- 数据查找的到->直接返回数据的下标
- 数据查不到,但要插入到数组当中
- 数据插入到表头或者表尾
- 数据直接查找不到
除了我们直接查找的到数据我们是
return mid
其他的返回值我们可以直接使用
return right+1 来进行代替
这里推荐大家用一个真实的数组来进行推一推
#3.上代码
class Solution
{
public:
int searchInsert(vector<int> &nums, int target)
{
//这道题目作为二分的延展题目我们还是使用二分的思路给他解决掉
int left = 0;
int right = nums.size() - 1;
while (left <= right)
{
int mid = left + ((right - left) / 2);
if (nums[mid] > target)
{
right = mid - 1;
}
else if (nums[mid] < target)
{
left = mid + 1;
}
else
{
return mid;
}
}
return right + 1; //三种情况合体处理的结果
}
};
\