这道题用到了两次二分法。第一次二分法确定了所查找元素第一次出现的位置,如果low不等于target则说明数组中不存在所查找的元素,直接返回结果。如果所查找的元素的值大于所给数组的最大值,有可能发生越界,所以要做特殊判断。如nums = [5],target=7。只有一个元素。mid = 0 因为nums[mid] < target,所以low = mid+1,此时就发生越界了。所以要判断,如果 low == nums.size() ,也直接返回res.
第二次二分法是,判断最后一次出现的位置。因为[0,low)都小于target,而[low,nums.size()] 都大于target,所以 low指向的是第一个大于target的元素。故low-1就是元素结束的位置。