注意边界情况,就是二分搜索的变形呗。
又是一个简单题目
class Solution {
public:
int searchSub(int A[],int l,int r,int target)
{
if(l>r) return l;
if(l==r)
{
if(A[l]>=target) return l;
else return l+1;
}
int mid=(l+r)/2;
if(A[mid]==target) return mid;
if(A[mid]>target) return searchSub(A,l,mid-1,target);
else return searchSub(A,mid+1,r,target);
}
int searchInsert(int A[], int n, int target) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(n<=0) return 0;
else if(A[0]>=target) return 0;
else if(A[n-1]<target) return n;
return searchSub(A,0,n-1,target);
}
};