水题,二分查找而已。
我是用指针传递的下一个开始的位置,所以多传了一个表示整个数组开始的指针,有点蠢啊。
int bsearch(int A[], int n, int target, int* a){
if(n<=0)
return A-a;
int middle = n/2;
if(A[middle] == target)
return A-a+middle;
else if(A[middle] > target)
return bsearch(A, middle, target, a);
else
return bsearch(A+middle+1, n-middle-1, target, a);
}
class Solution {
public:
int searchInsert(int A[], int n, int target) {
return bsearch(A, n, target, A);
}
};