import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 如果目标值存在返回下标,否则返回 -1 * @param nums int整型一维数组 * @param target int整型 * @return int整型 */ public int search (int[] nums, int target) { if(nums == null || nums.length == 0){ return -1; } int left = 0; int right = nums.length - 1; int middleIndex = 0; while(left != right){ middleIndex = left + (right - left) / 2; int middleValue = nums[middleIndex]; if(target == middleValue){ while(middleIndex != left && nums[middleIndex -1] == target){ middleIndex -= 1; } return middleIndex; } else if(middleValue < target){ //从右侧找 left = middleIndex + 1; } else { //从左侧找 right = middleIndex - 1; } } if(nums[left] == target){ return left; } else { return -1; } } }