本题的主要思路是二分法。(因为观察到数组为升序排列,因此可以考虑使用二分法)
主要思路如下:
(1)定义左右指针并为其赋初值,min为左指针赋初值为0,max为右指针赋初值为len-1。
(2)定义for循环,循环内定义int mid为中间指针,每次循环都将mid赋值为
mid=min+(max-min)/2 (防止溢出),循环条件为min<=max。
(3)进入循环内判断:
如果nums[min] 如果nums[max]>target,表示min到max位置里恰好没有target,max刚刚小于target,则直接返回max+1; (在确定返回值与min、max关系时,我直接拿具体数值举了例子) (4)如果都满足上述条件,即表示target在min 到 max之间。 如果nums[mid]==target表示正好找到,则直接返回mid; 如果nums[mid] 如果nums[mid]>target表示target在mid的左半部分,则使max=mid-1;class Solution {
public:
int searchInsert(vector



