题目描述
给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引。如果没有,返回到它将会被按顺序插入的位置。
你可以假设在数组中无重复元素。
样例
[1,3,5,6],5 → 2
[1,3,5,6],2 → 1
[1,3,5,6], 7 → 4
[1,3,5,6],0 → 0
思路
简单的二分搜索,在得到搜索结果后判断处理一下即可
代码
public class Solution {
/*
* @param A: an integer sorted array
* @param target: an integer to be inserted
* @return: An integer
*/
public int searchInsert(int[] A, int target) {
// write your code here
if (A.length==0){
return 0;
}
int start = 0;
int end = A.length-1;
int mid;
while(start<end){
mid = start+ (end-start)/2;
if (A[mid]>target){
end=mid-1;
}
if (A[mid]<target){
start = mid+1;
}
if (A[mid]==target){
end=mid;
}
}
if (A[start]>=target){
return start;
}
else
return start+1;
}
}