LintCode The first index of target
(一)题目描述
给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。
(二)注意
此题的关键在于,返回的是第一个target 的index。
(三)代码
public int binarySearch(int[] nums, int target) {
int left =0,right = nums.length;
int middle = (left+right)/2;
while (left<right){
if (nums[middle]<target){
left = middle+1;
}else { //nums[middle]>=target
right = middle;
}
}
return target==nums[middle] ? middle:-1;
}
注:
判断相等之后,先不立即返回index,而是修改right指针指向的位置(first index 所以只会在左一半)。
还没有评论,来说两句吧...