!!!题目链接!!!
Solution:
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int max = nums.size() -1 ;
int min = 0;
int mid = 0;
int position = 0;
if(target > nums[max])
return max+1;
if(target < nums[min])
return min;
while(max > min)
{
mid = min + (max - min)/2;
if(target == nums[mid])
{
return mid;
}
if(target > nums[mid])
{
min = mid+1;
}else
{
max = mid;
}
}
return max;
}
};
优化
class Solution {
public:
int searchInsert(vector<int>& nums, int target) {
int lo = 0, hi = nums.size()-1;
while(lo <= hi){
int mid = lo+(hi-lo)/2;
if(target == nums[mid]) return mid;
else if(target > nums[mid]) lo = mid + 1;
else hi = mid -1;
}
return lo;
}
};