思路:典型的二分法。这里用的是递归写法。有空可以试下非递归的。
class Solution {
public:int solve(vector<int>& nums,int low,int high,int target){
if(low>=high){
if(target>nums[low])
return low+1;
else
return low;
}
int mid=(low+high)/2;
if(nums[mid]==target){
return mid;
}else if(nums[mid]>target){
return solve(nums,low,mid,target);
}else{
return solve(nums,mid+1,high,target);
}
}
int searchInsert(vector<int>& nums, int target) {
int len=nums.size();
if(len==0) return 0;
return solve(nums,0,len-1,target);
}
};