二分查找,找到目标值之后向左寻找不等于target的值,如果找到了则i+1就是答案,如果找不到,那就是0;
这题需要注意的就是边界条件的考虑
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 如果目标值存在返回下标,否则返回 -1
* @param nums int整型一维数组
* @param target int整型
* @return int整型
*/
public int search (int[] nums, int target) {
// write code here
int min = 0, max = nums.length - 1, mid=(min + max) / 2;
while (min <= max) {
mid = (min + max) / 2;
if (nums[mid] == target) {
// found
for (int i = mid - 1; i >= 0; i--) {
if (nums[i] != target) {
return i + 1;
}
}
return 0;
} else if (nums[mid] < target) {
min = mid + 1;
} else {
max = mid - 1;
}
}
return -1;
}
}