二分查找,找到目标值之后向左寻找不等于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;
    }
}