题解 | #二分查找-II#
二分查找-II
http://www.nowcoder.com/questionTerminal/4f470d1d3b734f8aaf2afb014185b395
NC105. 二分查找II
C
int search(int* nums, int numsLen, int target ) {
int left = 0, right = numsLen - 1;
while (left <= right)
{
int mid = (left + right) / 2;
if (nums[mid] == target)
{
while (nums[mid] == nums[mid-1]) //找到 nums 中的第一个出现的target
mid--;
return mid;
}
else if (nums[mid] > target)
right = mid - 1;
else
left = mid + 1;
}
return -1;
}