题解 | #二分查找-II#
二分查找-II
http://www.nowcoder.com/practice/4f470d1d3b734f8aaf2afb014185b395
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 如果目标值存在返回下标,否则返回 -1 * @param nums int整型一维数组 * @param numsLen int nums数组长度 * @param target int整型 * @return int整型 */ int findFirst(int* nums, int numsLen, int target){ if(numsLen <1){ return -1; } int low =0; int high = numsLen-1; while(low <= high){ int mid = (low + high)/2; if(target > nums[mid]){ low = mid+1; }else if(target == nums[mid] && (mid -1 < 0 || nums[mid-1] != target)){ return mid; }else{ high = mid -1; } } return -1; } int search(int* nums, int numsLen, int target ) { // write code here if(numsLen == 0){ return -1; } int result = 0; result = findFirst(nums,numsLen,target); return result; }