/** * 请实现有重复数字的升序数组的二分查找 * 给定一个 元素有序的(升序)长度为n的整型数组 nums 和一个目标值 target , * 写一个函数搜索 nums 中的第一个出现的target,如果目标值存在返回下标,否则返回 -1 * * @param nums * @param target * @return */ public int search(int[] nums, int target) { //边界条件判断 if (nums == null || nums.length == 0) { return -1; } int left = 0; int right = nums.length - 1; while (left < right) { int mid = left + (right - left) / 2; if (nums[mid] < target) { left = mid + 1; } else { right = mid; } } return nums[left] == target ? left : -1; }