给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。
你可以假设数组中无重复元素。
输入: [1,3,5,6], 5
输出: 2
输入: [1,3,5,6], 2
输出: 1
输入: [1,3,5,6], 7
输出: 4
一看到排序数组就想 二分法 能不能做。
下面是一个通用二分模版。
public int searchInsert(int[] nums, int target) {
int left=0;
int right=nums.length;
while (left<right){
int mid = (left+right) >>> 1;
if (nums[mid] < target){
left=mid+1;
}else {
right=mid;
}
}
return left;
}
}
网友评论