第一次查找 first,mid 找到后,往左区间继续查找直到找到第一个位置 first,注意与普通二分查找不同的是找到后 while 循环也不结束,直到 left > right
第二次查找 last 同理,往右区间查找
学习点
注意二分查找的 while 循环边界条件: * 之前解答中为 while (left < right - 1),因为在循环中 left = mid, right = mid,而 mid 已经验证过不等于 target
这里为 while (left <= right),因为在循环中 left = mid + 1, right = mid - 1,left 和 right 没有验证是否等于 target,所以在最后一次循环 left = right 时,验证 mid(=left=right) 位置是否等于 target